c - 通过实现定义的宏识别 clang、gcc 和 tcc

标签 c gcc macros clang tcc

我使用 clanggcctcc,我希望能够在一个通用 header 中区分这三者.

从他们的宏转储来看,我预计 __clang__ 宏将唯一标识 clang。

我无法使用 tcc 获取宏转储($compiler -x c -E -dM/dev/null 在其情况下不起作用)。

唯一标识 gcc(可能还有 tcc)的宏(如果有的话)是什么?

最佳答案

使用 __TINYC__ 检测 tcc1

在这个 StackOverflow 问题中解释了 gcc 和 clang 的检测:Detect gcc as opposed to msvc / clang with macro


1(引自:http://bellard.org/tcc/tcc-doc.html#SEC9)
__TINYC__ 是预定义的宏,值为 1 表示您使用 TCC。

关于c - 通过实现定义的宏识别 clang、gcc 和 tcc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39446460/

相关文章:

c++ - #ifdef 在 switch 语句错误?

clojure:如何将命名空间作为宏参数传递?

macros - 从 textmate bundle 宏中排除文件类型

c - 声明一个负长度的数组

c++ - 如何正确引用匿名命名空间中的函数

cURL C 教程

c - isdigit() 返回错误结果?

c - 将值无穷大存储到变量

c - Arduino + GSM SIM900 返回 ÿ 字符

c++ - 获得绝对时间的更好方法?