web-dev-qa-db-ja.com

clangの検出に使用できる定義済みマクロは何ですか?

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

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

107
Pierre Bourdon

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

$ strings /usr/bin/clang | grep __ | grep -i clang
__clang__
75
Pierre Bourdon

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

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

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

115
Chris Suter

この質問は何年も回答されていますが、Windows

echo | clang -dM -E -

gCCと同じ:

echo | gcc -dM -E -

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

39
Bernd Elkemann