GNU/Linux >> Linux Esercitazione >  >> Linux

Macro per GCC/G++ per differenziare Linux e Mac OSX?

La prossima volta che vorrai verificare le macro predefinite supportate da GCC su una piattaforma, esegui il preprocessore con il flag -dM . Elencherà tutte le macro predefinite disponibili sul sistema. Ad esempio:

$ 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
...

Sarei più propenso a testare la disponibilità delle funzionalità rispetto al nome della piattaforma. Prova ad usare autoconf.

In caso contrario, questo è un elenco completo delle definizioni di piattaforma.

Dai un'occhiata anche a questa pagina per le definizioni relative a compilatori, librerie, architetture e dispositivi.


Rileva OSX con __APPLE__ macro se devi. È meglio usare configure per rilevare le funzionalità se puoi, ma non tutto funziona bene in questo modo.


Uso __MACH__ per testare Mac OS X - non è unico al 100% per Mac OS X (potrebbero esserci ancora alcune vecchie scatole NeXT là fuori!) ma è abbastanza buono per capire la differenza tra Mac e Linux.


Linux
  1. 10 tutorial sui comandi Linux per principianti ed esperti

  2. Hitman The Complete First Season per Linux e Mac ora disponibile

  3. Caffè:un'app di notizie e meteo per Linux

  4. DOS E NON FARE PER Linux VPS

  5. Installa python-openstackclient su Linux e Mac OS

Le 10 migliori distribuzioni Linux per laptop e desktop

Come cancellare la cronologia di Bash in Linux e Mac

Invia e ricevi un file nella programmazione socket in Linux con C/C++ (GCC/G++)

Stampa duplex manuale per Mac (e/o Linux)

Nomi per dischi ATA e SATA in Linux

Compatibilità binaria tra Mac OS X e Linux