Ответ 1
Вы можете использовать:
#ifdef __GNUC__
#ifdef __MINGW32__
Для дополнительного макроса вы можете быть заинтересованы в этой странице, которая показывает другие макросы компилятора
Я хочу сделать что-то вроде:
#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 в препроцессоре С++?
Вы можете использовать:
#ifdef __GNUC__
#ifdef __MINGW32__
Для дополнительного макроса вы можете быть заинтересованы в этой странице, которая показывает другие макросы компилятора
Для GCC:
#ifdef __GNUC__
Для MinGW:
#ifdef __MINGW32__
x86_64-w64-mingw32-gcc определяет как __MINGW32__
, так и __MINGW64__
.