ソースコードのコンパイルに使用されたコンパイラを検出しようとしています。MSVCまたはGCCをチェックするための事前定義されたマクロを簡単に見つけることができますが(たとえば、 http://predef.sourceforge.net/を参照)、clangをチェックするためのマクロを見つけることができません。
__CLANG__
現在私のコードをコンパイルしているものを知るために、clangがのようなマクロを定義しているかどうか誰かが知っていますか?
ソースコードのコンパイルに使用されたコンパイラを検出しようとしています。MSVCまたはGCCをチェックするための事前定義されたマクロを簡単に見つけることができますが(たとえば、 http://predef.sourceforge.net/を参照)、clangをチェックするためのマクロを見つけることができません。
__CLANG__
現在私のコードをコンパイルしているものを知るために、clangがのようなマクロを定義しているかどうか誰かが知っていますか?
コンパイラが使用するすべての定義済みマクロのリストを取得するには、次を使用します。
clang -dM -E -x c /dev/null
gcc でも同じことができます。
strings
+を使用して答えを見つけましたgrep
:
$ strings /usr/bin/clang | grep __ | grep -i clang
__clang__
この質問は何年も前から回答されていますが、(今後の参考のために) Windowsでの方法を追加させてください。
echo | clang -dM -E -
GCC の場合と同じ:
echo | gcc -dM -E -
注意: 最後のダッシュ-
は実際には重要です! (それ以外の場合はerror: no input files
、両方のコンパイラで得られます)