我通常通过检查__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++都是一样的