これらの行は libmagic
code で見つかりました。それらはどういう意味ですか?
_#ifdef __GNUC__
__attribute__((unused))
#endif
_
___GNUC__
_はどういう意味ですか?
チェックしているようです GCCがインストールされているかどうか 。
__attribute__((unused))
とは何ですか?
ここにコードスニペットがありますが、説明はありません: 未使用の変数に関する警告を消音するにはどうすればよいですか?
___GNUC__
_と__MSC_VER
_の違いは何ですか?
__MSC_VER
_についていくつかの説明がありますが、それはどういうことですか?
特定のVisual Studioバージョンでコードをコンパイルしているかどうかを検出する方法は?
最後に質問:
同じ_#ifdef
_を実行して、どのコンパイラがコードをコンパイルしているかを確認するにはどうすればよいですか?
コンパイラーでは、マクロを定義して、それらがどのコンパイラーであるか、どのバージョンであるかを判別するのが一般的です...ポータブルC++コードは、マクロを使用して、特定の機能を使用できるかどうかを確認できます。
_
__GNUC__
_はどういう意味ですか?
これは、私がGNUコンパイラであり、GNU拡張機能を使用できることを示しています。 [1]
__attribute__((unused))
とは何ですか?
変数に付加されたこの属性は、変数がおそらく未使用であることを意味します。 GCCは、この変数に対して未使用の変数警告を生成しません。 [2]
_
__GNUC__
_と__MSC_VER
_の違いは何ですか?
それらは2つの無関係なマクロです。 1つ目は私がGNUコンパイラーであり、2つ目はMSコンパイラーのバージョン番号です。ただし、MSコンパイラーはGNU拡張機能をサポートすることを想定していません) 。
同じ_
#ifdef
_を実行して、OSがpythonおよびMSビジュアルスタジオを使用してGNUコードをコンパイルしているかどうかを確認するにはどうすればよいですか?
_#if (defined(__GNU__) && defined(_MSC_VER))
// ...
#endif
_
コンパイラが異なれば、サポートする機能も異なります。コードを構築しているコンパイラに応じてサポートを有効にする一連の_#ifdef
_ブロックを見つけています。たとえば、GNUコンパイラは自動的に___GNUC__
_を定義します。___CC_ARM
_、___ICCARM__
_、___GNUC__
_、___TASKING__
_はすべてによって定義されますプロジェクトが移植され、関心を持っている特定のコンパイラ。
__attribute__((unused))
エントリはGNU固有のインジケータであり(他のコンパイラもこれをサポートしている可能性があります)、アタッチされているシンボルが未使用である可能性があるため、コンパイラはその状態について警告する必要があります。
これらのifdefを使用して、コードをビルドしているコンパイラを判別する方法については、Cをビルドするために別のプロジェクトで読んでいるのと同じ方法で行ってください。これらはpython =コード。