我使用 clang
、gcc
和 tcc
,我希望能够在一个通用 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/