GNU/Linux >> Znalost Linux >  >> Linux

Makra pro GCC/G++ pro odlišení Linuxu a Mac OSX?

Až si příště budete chtít vyzkoušet předdefinovaná makra podporovaná GCC na platformě, spusťte preprocesor s příznakem -dM . Zobrazí seznam všech předdefinovaných maker dostupných v systému. Například:

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

Byl bych spíše nakloněn testování dostupnosti funkcí než názvu platformy. Zkuste použít autoconf.

Jinak se jedná o úplný seznam definovaných platforem.

Podívejte se také na tuto stránku, kde najdete definice týkající se kompilátorů, knihoven, architektur a zařízení.


Zjistěte OSX pomocí __APPLE__ makro, pokud musíte. Je lepší použít configure zjišťovat funkce, pokud můžete, ale ne všechno takto funguje dobře.


Používám __MACH__ k otestování pro Mac OS X – není to 100% jedinečné pro Mac OS X (možná tam stále existují nějaké staré krabice NeXT!), ale je dost dobré pro zjištění rozdílu mezi Macem a Linuxem.


Linux
  1. FreeCAD – 3D modelovací a návrhářský software pro Linux

  2. Odeslání a příjem souboru v programování soketu v Linuxu s C/C++ (GCC/G++)

  3. Cross-compiler pro Linux na Mac OS X?

  1. Golang Mac OSX sestavení pro stroj Docker

  2. Jaká je alternativa XPerf pro Linux a Mac OS X?

  3. Co je jako pbcopy OSX pro Linux

  1. Cheat sheet pro uživatele Linuxu a oprávnění

  2. Linuxbrew – společný správce balíčků pro Linux a Mac OS X

  3. Hitman The Complete First Season pro Linux a Mac je nyní k dispozici