GNU/Linux >> Tutoriales Linux >  >> Linux

¿Macros para GCC/G++ para diferenciar Linux y Mac OSX?

La próxima vez que desee verificar las macros predefinidas compatibles con GCC en una plataforma, ejecute el preprocesador con el indicador -dM . Enumerará todas las macros predefinidas disponibles en el sistema. Por ejemplo:

$ touch dummy.hxx
$ cpp -dM ./dummy.hxx
#define __DBL_MIN_EXP__ (-1021)
#define __FLT_MIN__ 1.17549435e-38F
#define __CHAR_BIT__ 8
#define __WCHAR_MAX__ 2147483647
#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
#define __FLT_EVAL_METHOD__ 0
#define __DBL_MIN_10_EXP__ (-307)
#define __FINITE_MATH_ONLY__ 0
#define __SHRT_MAX__ 32767
#define __LDBL_MAX__ 1.18973149535723176502e+4932L
#define __UINTMAX_TYPE__ long unsigned int
#define __linux 1
#define __unix 1
#define __linux__ 1
...

Me inclinaría más por probar la disponibilidad de funciones que el nombre de la plataforma. Intente usar autoconf.

De lo contrario, esta es una lista completa de definiciones de plataforma.

Consulte también esta página para obtener definiciones sobre compiladores, bibliotecas, arquitecturas y dispositivos.


Detectar OSX con el __APPLE__ macro si es necesario. Es mejor usar configure para detectar características si puede, pero no todo funciona bien de esa manera.


Yo uso __MACH__ para probar Mac OS X:no es 100 % exclusivo de Mac OS X (¡todavía puede haber algunas cajas antiguas de NeXT por ahí!) pero es lo suficientemente bueno para diferenciar entre Mac y Linux.


Linux
  1. Hoja de trucos para usuarios y permisos de Linux

  2. Linuxbrew:un administrador de paquetes común para Linux y Mac OS X

  3. Hitman The Complete First Season para Linux y Mac ya disponible

  4. FreeCAD:un software de diseño y modelado 3D para Linux

  5. DOS Y NO HACER PARA Linux VPS

Las 10 mejores distribuciones de Linux para computadoras portátiles y de escritorio

Cómo borrar el historial de Bash en Linux y Mac

Diferentes declaraciones de qsort_r en Mac y Linux

Impresión dúplex manual para Mac (y/o Linux)

¿Qué es una alternativa de XPerf para Linux y Mac OS X?

Compatibilidad binaria entre Mac OS X y Linux