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

有人知道clang是否定义了一个像__CLANG__这样的宏,以便知道当前是什么在编译我的代码吗?

推荐答案

使用strings+grep找到答案:

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

C++相关问答推荐

VS代码输入需要多次

char为16位且Short也为16位的c环境合法吗

漏洞仅出现在FreeBSD上,但在Windows、Linux和MacOS上运行得非常好

我可以动态分配具有空类型函数的矩阵吗?

自定义应用程序上的日志(log)轮换问题

如何使fputs功能提示错误输入并要求用户重新输入.程序停止而不是请求新的输入

无效指针值在函数调用之间莫名其妙地改变

在Rust和C之间使用ffi时如何通过 struct 中的[U8;1]成员传递指针

如何在C语言中正确打印图形

有什么方法可以将字符串与我们 Select 的子字符串分开吗?喜欢:SIN(LOG(10))

不同出处的指针可以相等吗?

无法访问共享目标文件内的共享指针

某些EAX值的不同调用方的CPUID结果不一致

如何组合两个宏来初始化C语言中的字符串数组?

带有数组指针的 struct 在print_stack()函数中打印随机数

是否有单独的缓冲区用于读写库调用?

将某些内容添加到链接列表时,列表中的其他项将使用最后添加的项的名称

变量值不正确的问题

从文件到链表读取日期

在 C 中传递参数时出现整数溢出