我可以用什么预定义macros来检测叮当声?
我试图检测用于编译我的源代码的编译器。 我可以很容易地find预定义macros来检查MSVC或GCC(例如,请参阅http://predef.sourceforge.net/ ),但是我找不到任何macros来检查clang。
是否有人知道,如果clang定义了一个像__CLANG__
这样的macros,以便知道当前正在编译我的代码?
要获得编译器使用的所有预定义macros的列表,请使用以下命令:
clang -dM -E -xc /dev/null
你可以为gcc做同样的事情。
使用strings
+ grep
find答案:
$ 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
)