私はLinuxのカーネルコードを走査しています。 #define __async_inline __always_inline
と定義されたマクロが見つかりました。 __always_inline
を検索したところ、#define __always_inline inline
という文が見つかりました。私の質問は、なぜ彼らはこのようにする必要があるのですか?彼らはこのマクロの代わりにinline
を直接使用できますか?マクロを直接使用する定義はなぜですか?(正確に何が必要なのかの説明を参照してください)
5
A
答えて
5
これは、何らかの決定(この場合はinline
の使用)を単一の場所に移動するためにコードをパラメータ化する一般的な方法です。したがって、その決定を変更する必要があります(さまざまなコンパイラ構成オプション、異なるアーキテクチャー)、変更する単一の場所は1つだけです。
7
コードは、これを言う:
#ifdef CONFIG_HAS_DMA
#define __async_inline
#else
#define __async_inline __always_inline
#endif
それは自己説明です。 CONFIG_HAS_DMA
が定義されていない場合、__async_inline
はinline
に置き換えられます。
+0
私の場合はこのような条件はありません – Chinna
+0
@Chinnaこれはどこに定義されていますか? http://lxr.free-electrons.com/ident?v=2.6.32;i=__async_inline –
関連する問題
- 1. 明確な例でAngularJS $ injectorを説明してください
- 2. Assembly.GetTypes()に参照が必要なのはなぜですか?
- 3. 条件なしSQL結合、説明を参照してください
- 4. なぜマクロに2層の間接指定が必要なのですか?で
- 5. 必要なDLL参照を格納する正しい.NET_Folderは何ですか?
- 6. Outlookアドインが何であるか説明してください
- 7. モデル参照を直接HTML要素に渡すのは正しいですか?
- 8. 私は簡単に説明してください必要logstash
- 9. このSyncsortコードは何を説明してくださいか?
- 10. 定義時に参照変数を初期化する必要があるのはなぜですか?
- 11. PHP定義されていない変数を明確に定義する必要があります
- 12. なぜ私のASP.NET要素の参照はすべて未定義ですか?
- 13. いくつかの説明が必要
- 14. なぜoffsetofマクロが必要ですか?
- 15. JavaScriptのDOM idを直接参照できるときにdocument.getElementByIdを使用するのはなぜですか?
- 16. LISPの定義を参照してください
- 17. なぜXcodeの "タイプがプロトコルに準拠していないか"を参照してください
- 18. ディクショナリ値への直接参照を関数に渡すことができないのはなぜですか?
- 19. このSQLクエリは何をしますか?説明してください
- 20. 具体的なドメインを使って説明するのは正確ですか?
- 21. マクロ実行時にCALL EXECUTEを使用してマクロエラーを直接実行するのはなぜですか?
- 22. なぜHtml.Actionに定義されたルートが必要ですか?
- 23. C++の正確な参照カウントは何ですか?
- 24. ここで何が行われているかについての詳細な説明が必要ですか?
- 25. 参照アセンブリを連鎖する必要があるのはなぜですか?
- 26. GNU emacs lisp:with-wrapper-hookマクロは何をしますか?説明と例を教えてください。
- 27. 参照をクラスメンバーとして使用できないのはなぜですか?
- 28. 私の構造定義にコロンを説明してください?
- 29. Spannedインターフェイスからのこれらのフラグ(SPAN_COMPOSING、SPAN_USERなど)の定義を説明してください。
- 30. `-rdynamic`は正確に何を行い、正確に何が必要なのでしょうか?
将来的には、機能性/プロパティをマクロに追加したり、移植性の問題のために追加することもあります。 –
明らかに 'inline'は' C99'バージョンの言語からしか標準ではありませんが、コードベース内でキーワードをハードコーディングするのを避けるため、これを行ったと仮定します。 – user2485710