通过 implementation-defined 宏识别 clang、gcc 和 tcc
Recognizing clang, gcc, and tcc by implementation-defined macros
我使用 clang
、gcc
和 tcc
,我希望能够在一个共同点 header 中区分这三个。
从他们的宏转储来看,我希望
__clang__
宏将唯一标识 clang。
我无法使用 tcc
获取宏转储($compiler -x c -E -dM /dev/null
在这种情况下不起作用)。
唯一标识 gcc(可能还有 tcc)的宏(如果有的话)是什么?
使用__TINYC__检测tcc1。
在这个 Whosebug 问题中解释了 gcc 和 clang 的检测:
1(引自:http://bellard.org/tcc/tcc-doc.html#SEC9)
__TINYC__ 是一个预定义的宏,1 表示你使用 TCC。
我使用 clang
、gcc
和 tcc
,我希望能够在一个共同点 header 中区分这三个。
从他们的宏转储来看,我希望
__clang__
宏将唯一标识 clang。
我无法使用 tcc
获取宏转储($compiler -x c -E -dM /dev/null
在这种情况下不起作用)。
唯一标识 gcc(可能还有 tcc)的宏(如果有的话)是什么?
使用__TINYC__检测tcc1。
在这个 Whosebug 问题中解释了 gcc 和 clang 的检测:
1(引自:http://bellard.org/tcc/tcc-doc.html#SEC9)
__TINYC__ 是一个预定义的宏,1 表示你使用 TCC。