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.