代码之家  ›  专栏  ›  技术社区  ›  Pierre Bourdon

我可以使用什么预定义宏来检测clang?

  •  105
  • Pierre Bourdon  · 技术社区  · 15 年前

    我正在尝试检测用于编译源代码的编译器。我可以很容易地找到预定义的宏来检查msvc或gcc(请参见 http://predef.sourceforge.net/ 例如),但我找不到任何宏来检查clang。

    有人知道clang是否像 __CLANG__ 为了知道当前正在编译什么代码?

    3 回复  |  直到 7 年前
        1
  •  110
  •   Martijn Courteaux    7 年前

    要获取编译器使用的所有预定义宏的列表,请使用以下命令:

    clang -dM -E -x c /dev/null
    

    你也可以为GCC做同样的事情。

        2
  •  74
  •   Pierre Bourdon    15 年前

    找到答案时使用 strings + grep :

    $ strings /usr/bin/clang | grep __ | grep -i clang
    __clang__
    
        3
  •  34
  •   Bernd Elkemann    12 年前

    这个问题已经回答了好几年了,但我想补充一点(供以后参考)。 窗户 :

    echo | clang -dM -E -
    

    与GCC相同:

    echo | gcc -dM -E -
    

    请注意:最后一个破折号 - 实际上很重要!(否则你会 error: no input files 对于两个编译器)