我可以用什么预定义macros来检测叮当声?

我试图检测用于编译我的源代码的编译器。 我可以很容易地find预定义macros来检查MSVC或GCC(例如,请参阅http://predef.sourceforge.net/ ),但是我找不到任何macros来检查clang。

是否有人知道,如果clang定义了一个像__CLANG__这样的macros,以便知道当前正在编译我的代码?

要获得编译器使用的所有预定义macros的列表,请使用以下命令:

 clang -dM -E -xc /dev/null 

你可以为gcc做同样的事情。

使用strings + grepfind答案:

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

这个问题已经被回答多年了,但是让我补充一下(以备参考)它是如何在Windows中完成的:

 echo | clang -dM -E - 

与GCC相同:

 echo | gcc -dM -E - 

请注意:最后一个冲刺-实际上很重要! (否则你会得到error: no input files两个编译器都error: no input files