funcion - ¿Qué condicional del preprocesador C debería usar para el código específico de OS X?
funcion preprocesador en c++ (6)
Este ejemplo de código puede ayudarte
if defined(__APPLE__)
#include "TargetConditionals.h"
if (!defined(TARGET_OS_IPHONE) && !defined(TARGET_IPHONE_SIMULATOR))
{
//write your OSX specific code here
}
¿Qué condicional del preprocesador C debería usar para el código específico de OS X? Necesito incluir una biblioteca específica si estoy compilando para OS X o un encabezado diferente si estoy compilando para Linux.
Sé que hay __APPLE__
pero no sé si esa es una condición actual para OS X 10.x.
Si recuerdo correctamente, es __APPLE__
:)
viejo estilo crudo
#ifdef WIN32
// windows.
#elif __APPLE__
// osx and ios.
#endif
Esta lista de macros del sistema operativo dice que la presencia de __APPLE__
y __MACH__
indica OSX.
También confirmado en la línea 18 de parte de la fuente para fdisk
.
Esta página contiene una lista de todas las macros predefinidas de SO.
Para mac OSX, tanto el __APPLE__
&& __MACH__
deben definirse.
__APPLE__
le dirá que está compilando en una plataforma Apple. A menos que necesite soportar las versiones de MacOS antes de OS X, eso debería ser lo suficientemente bueno. Alternativamente, puedes usar __APPLE__
y __MACH__
para asegurarte de que estás compilando en OS X.