在我的C/ c++代码中,我如何区分GCC和clang作为编译器?



我通常通过检查__GNUC__来编写针对gcc的代码。现在我想为GCC和clang写一些行为不同的代码——但似乎clang也定义了__GNUC__。我如何区分它们?

两者都定义了__GNUC__,但只有clang定义了__clang__

因此,对于仅gcc,您将写入:

#if defined(__GNUC__) && !defined(__clang__)
// do GCC-only stuff
#endif

当然,你可以通过分离这两个条件来适应GCC-only, clang-only和其他。

注意:C和c++都是一样的

最新更新