Lain kali Anda ingin memeriksa makro yang telah ditentukan sebelumnya yang didukung oleh GCC pada platform, jalankan preprocessor dengan flag -dM
. Ini akan mencantumkan semua makro standar yang tersedia di sistem. Misalnya:
$ 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
...
Saya akan lebih cenderung menguji ketersediaan fitur daripada nama platform. Coba gunakan konfigurasi otomatis.
Jika tidak, ini adalah daftar lengkap definisi platform.
Lihat juga halaman ini untuk mengetahui definisi tentang kompiler, pustaka, arsitektur, dan perangkat.
Deteksi OSX dengan __APPLE__
makro jika Anda harus. Sebaiknya gunakan configure
untuk mendeteksi fitur jika Anda bisa, tetapi tidak semuanya bekerja dengan baik seperti itu.
Saya menggunakan __MACH__
untuk menguji Mac OS X - ini tidak 100% unik untuk Mac OS X (mungkin masih ada beberapa kotak NeXT lama di luar sana!) tetapi cukup bagus untuk mengetahui perbedaan antara Mac dan Linux.