2011-10-27 9 views
5

Mi chiedo perché su MacOSX la macro __unix__ non sia definita.Macro comune per identificare un sistema derivato UNIX? (Linux, OSX, BSD, ...)

Non è derivato MacOSX un derivato UNIX BSD?

Se definisco la macro __unix__ nel mio codice, potrei avere qualche problema?

In generale, quando si controlla la piattaforma corrente, preferisco fare qualcosa di simile:

#ifdef __unix__ 
... 
#endif 

invece di:

#if defined(__unix__) || defined(__APPLE__) || defined(__linux__) || defined(BSD) ... 
... 
#endif 

Potrebbe la migliore opzione sia per definire il mio macro in un unico posto? Es .:

#if defined(__unix__) || defined(__APPLE__) || defined(__linux__) || defined(BSD) ... 
#define UNIX_ 
#endif 
+1

Se si sceglie di farlo, non utilizzare il doppio trattino basso nel nome. –

+1

avrai più occhi sul tuo problema se cambi uno dei tuoi tag in "c". In bocca al lupo. – shellter

+0

@WilliamPursell: corretto. Grazie. – Pietro

risposta

4

POSIX richiede _POSIX_VERSION da definire a <unistd.h> (accessibile anche tramite sysconf(_SC_VERSION)), in modo da provare che.

+0

Ok, ma prima di includere Devo controllare che sia su un sistema POSIX, altrimenti quel file non sarà disponibile. E non dovrebbe essere un file piccolo da includere ... – Pietro

+0

Bene, '' deve definire 'L_ctermid' su POSIX ... – ninjalj

Problemi correlati