preprocesamiento - los tres tipos de datos básicos en lenguaje c++ son
¿Cómo identificar plataforma/compilador desde macros de preprocesador? (4)
Esto es lo que uso:
#ifdef _WIN32 // note the underscore: without it, it''s not msdn official!
// Windows (x64 and x86)
#elif __unix__ // all unices, not all compilers
// Unix
#elif __linux__
// linux
#elif __APPLE__
// Mac OS, not sure if this is covered by __posix__ and/or __unix__ though...
#endif
EDITAR: aunque lo anterior podría funcionar para los aspectos básicos, recuerde verificar qué macro desea verificar mirando las páginas de referencia de Boost.Predef . O simplemente usa Boost.Predef directamente.
Estoy escribiendo un código multiplataforma, que debe compilarse en Linux, Windows, Mac OS. En Windows, debo apoyar visual studio y mingw.
Hay algunos fragmentos de código específicos de la plataforma, que debo colocar en el #ifdef .. #endif
. Por ejemplo, aquí puse el código específico de win32:
#ifdef WIN32
#include <windows.h>
#endif
Pero, ¿cómo reconozco Linux y Mac OS? ¿Cuáles son los nombres definidos (o etc.) que debo usar?
Si está escribiendo C ++, no puedo recomendar el uso de las bibliotecas de Boost con la suficiente fuerza.
La última versión (1.55) incluye una nueva biblioteca Predef que cubre exactamente lo que está buscando , junto con docenas de otras macros de reconocimiento de plataforma y arquitectura.
#include <boost/predef.h>
// ...
#if BOOST_OS_WINDOWS
#elif BOOST_OS_LINUX
#elif BOOST_OS_MACOS
#endif
Ver: http://predef.sourceforge.net/index.php
Este proyecto proporciona una lista razonablemente completa de #defines
definiciones predefinidas para muchos sistemas operativos, compiladores, estándares de plataforma y lenguaje y bibliotecas estándar.