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