通过实现定义的宏识别clang,gcc和tcc

时间:2016-09-12 08:47:27

标签: c gcc macros clang tcc

我使用clanggcctcc,我希望能够在公共标题中区分这三者。

通过他们的宏观转储来判断,我预计会出现这种情况 __clang__宏将唯一标识clang。

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

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

1 个答案:

答案 0 :(得分:7)

使用__TINYC__检测tcc 1

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

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