117

ソースコードのコンパイルに使用されたコンパイラを検出しようとしています。MSVCまたはGCCをチェックするための事前定義されたマクロを簡単に見つけることができますが(たとえば、 http://predef.sourceforge.net/を参照)、clangをチェックするためのマクロを見つけることができません。

__CLANG__現在私のコードをコンパイルしているものを知るために、clangがのようなマクロを定義しているかどうか誰かが知っていますか?

4

3 に答える 3

128

コンパイラが使用するすべての定義済みマクロのリストを取得するには、次を使用します。

clang -dM -E -x c /dev/null

gcc でも同じことができます。

于 2011-04-29T04:00:18.400 に答える
83

strings+を使用して答えを見つけましたgrep

$ strings /usr/bin/clang | grep __ | grep -i clang
__clang__
于 2010-04-17T13:23:24.233 に答える
44

この質問は何年も前から回答されていますが、(今後の参考のために) Windowsでの方法を追加させてください。

echo | clang -dM -E -

GCC の場合と同じ:

echo | gcc -dM -E -

注意: 最後のダッシュ-は実際には重要です! (それ以外の場合はerror: no input files、両方のコンパイラで得られます)

于 2012-07-27T10:37:21.970 に答える