GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Makros für GCC/G++ zur Unterscheidung von Linux und Mac OSX?

Wenn Sie das nächste Mal vordefinierte Makros auschecken möchten, die von GCC auf einer Plattform unterstützt werden, führen Sie den Präprozessor mit dem Flag -dM aus . Es listet alle vordefinierten Makros auf, die auf dem System verfügbar sind. Zum Beispiel:

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

Ich würde eher die Verfügbarkeit von Funktionen als den Plattformnamen testen. Versuchen Sie es mit autoconf.

Ansonsten ist dies eine umfassende Liste von Plattformdefinitionen.

Sehen Sie sich auch diese Seite für Definitionen zu Compilern, Bibliotheken, Architekturen und Geräten an.


Erkenne OSX mit der __APPLE__ Makro, wenn Sie müssen. Verwenden Sie besser configure Funktionen zu erkennen, wenn Sie können, aber nicht alles funktioniert auf diese Weise gut.


Ich verwende __MACH__ zum Testen für Mac OS X - es ist nicht 100% einzigartig für Mac OS X (es gibt vielleicht noch einige alte NeXT-Boxen da draußen!), aber es ist gut genug, um den Unterschied zwischen Mac und Linux zu erkennen.


Linux
  1. Spickzettel für Linux-Benutzer und -Berechtigungen

  2. Hitman The Complete First Season für Linux und Mac jetzt verfügbar

  3. Coffee – Eine Nachrichten- und Wetter-App für Linux

  4. DOS UND NICHTS FÜR Linux VPS

  5. Installieren Sie python-openstackclient unter Linux und Mac OS

Top 10 Linux-Distributionen für Laptop und Desktop

Linuxbrew – Ein gemeinsamer Paketmanager für Linux und Mac OS X

So löschen Sie den Bash-Verlauf in Linux und Mac

Unterschiedliche Deklarationen von qsort_r auf Mac und Linux

Manueller Duplexdruck für Mac (und/oder Linux)

Binäre Kompatibilität zwischen Mac OS X und Linux