GNU/Linux >> Belajar Linux >  >> Linux

Macro untuk GCC/G++ untuk membedakan Linux dan Mac OSX?

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.


Linux
  1. 10 tutorial perintah Linux untuk pemula dan ahli

  2. Linuxbrew – Manajer Paket Umum Untuk Linux dan Mac OS X

  3. Hitman Musim Pertama Lengkap untuk Linux dan Mac sekarang tersedia

  1. FreeCAD – Perangkat Lunak Pemodelan dan Desain 3D untuk Linux

  2. DOS DAN JANGAN UNTUK VPS Linux

  3. Instal python-openstackclient di Linux dan Mac OS

  1. Kirim dan Terima file dalam pemrograman soket di Linux dengan C/C++ (GCC/G++)

  2. Apa alternatif XPerf untuk Linux dan Mac OS X?

  3. Seperti apa pbcopy OSX untuk Linux