我可以使用什么预定义宏来检测 clang?
我正在尝试检测用于编译源代码的编译器。我可以轻松找到预定义的宏来检查 MSVC 或 GCC(请参阅 https://github.com/cpredef/predef 例如),但我找不到任何宏来检查 clang。
有人知道 clang 是否定义了像 __CLANG__
这样的宏,以便知道当前正在编译我的代码的是什么?
I'm trying to detect the compiler used to compile my source code. I can easily find predefined macros to check for MSVC or GCC (see https://github.com/cpredef/predef for example), but I cannot find any macro to check for clang.
Does someone know if clang defines a macro like __CLANG__
in order to know what is currently compiling my code ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
要获取编译器使用的所有预定义宏的列表,请使用以下命令:
您可以对 gcc 执行相同的操作。
To get a list of all the predefined macros that the compiler uses, use this:
You can do the same for gcc.
使用
strings
+grep
找到答案:Found the answer using
strings
+grep
:这个问题已经回答了很多年,但让我补充一下(以供将来参考)它在 Windows 中是如何完成的:
与 GCC 相同:
请注意:最后一个破折号
-
是其实很重要! (否则两个编译器都会收到错误:没有输入文件
)This question has been answered for years but let me add (for future reference) how it is done in Windows:
same as for GCC:
Please note: The last dash
-
is actually important! (Otherwise you geterror: no input files
for both compilers)