Подтвердить что ты не робот

Как определить g++ и MinGW в препроцессоре С++?

Я хочу сделать что-то вроде:

#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

Как определить g++ и MinGW в препроцессоре С++?

4b9b3361

Ответ 1

Вы можете использовать:

#ifdef __GNUC__
#ifdef __MINGW32__

Для дополнительного макроса вы можете быть заинтересованы в этой странице, которая показывает другие макросы компилятора

Ответ 2

Для GCC:

#ifdef __GNUC__

Для MinGW:

#ifdef __MINGW32__

x86_64-w64-mingw32-gcc определяет как __MINGW32__, так и __MINGW64__.