我可以使用什么预定义宏来检测 clang?

发布于 2024-08-29 13:48:38 字数 260 浏览 8 评论 0原文

我正在尝试检测用于编译源代码的编译器。我可以轻松找到预定义的宏来检查 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我最亲爱的 2024-09-05 13:48:38

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

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

您可以对 gcc 执行相同的操作。

To get a list of all the predefined macros that the compiler uses, use this:

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

You can do the same for gcc.

缺⑴份安定 2024-09-05 13:48:38

使用 strings + grep 找到答案:

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

Found the answer using strings + grep :

$ strings /usr/bin/clang | grep __ | grep -i clang
__clang__
茶花眉 2024-09-05 13:48:38

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

echo | clang -dM -E -

与 GCC 相同:

echo | gcc -dM -E -

请注意:最后一个破折号 - 是其实很重要! (否则两个编译器都会收到错误:没有输入文件

This question has been answered for years but let me add (for future reference) how it is done in Windows:

echo | clang -dM -E -

same as for GCC:

echo | gcc -dM -E -

Please note: The last dash - is actually important! (Otherwise you get error: no input files for both compilers)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文