variable una que preprocesador normal make lenguaje las ifdef identifica entre directiva diferencia define cual compilador c++ g++ mingw c-preprocessor gnu

una - ¿Cómo puedo detectar g++ y MinGW en el preprocesador de C++?



en make la variable que identifica el preprocesador de c se define (2)

Quiero hacer algo como:

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

Como quiero usar bastante PRETTY_FUNCTION, esto solo lo admite gnu, por lo que necesito saber si estoy compilando para g ++ y MinGW, ¿cómo puedo hacer eso? Supongo que todo lo que necesito saber son las definiciones del preprocesador del compilador, como hice para Microsoft a continuación.

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

¿Cómo puedo detectar g ++ y MinGW en el preprocesador de C ++?


Para GCC:

#ifdef __GNUC__

Para MinGW:

#ifdef __MINGW32__

x86_64-w64-mingw32-gcc define ambos __MINGW32__ y __MINGW64__ .


Puedes hacer uso de:

#ifdef __GNUC__ #ifdef __MINGW32__

Para macros adicionales, puede interesarle esta página que muestra otras macros del compilador