49

我想做类似的事情:

#ifdef GCC
#define GetFunctionName() string("My function name is ") + __PRETTY_FUNCTION__;
#endif

由于我想使用漂亮的 PRETTY_FUNCTION,据我所知,这仅受 gnu 支持,所以我需要检测我是否正在为 g++ 和 MinGW 进行编译,我该怎么做?我猜我需要知道的只是编译器的预处理器定义,就像我在下面为 Microsoft 所做的那样。

#ifdef WIN32
#define LogFuncBegin() gLogger.FuncBegin( __FUNCTION__ );
#define LogFuncEndSuccess() gLogger.FuncEndSuccess( __FUNCTION__ );
#endif

如何在 C++ 预处理器中检测 g++ 和 MinGW?

4

2 回答 2

63

您可以使用:

#ifdef __GNUC__
#ifdef __MINGW32__

对于其他宏,您可能对此页面感兴趣,该页面显示其他编译器宏

于 2013-07-05T17:09:33.023 回答
42

对于海湾合作委员会:

#ifdef __GNUC__

对于 MinGW:

#ifdef __MINGW32__

x86_64-w64-mingw32-gcc 定义了__MINGW32____MINGW64__

于 2013-07-05T17:08:31.857 回答