Макросы для GCC/G ++ для дифференциации Linux и MAC OSX?

Макросы для GCC/G ++ для дифференциации Linux и MAC OSX?

39
задан Viet 2 April 2010 в 09:46
поделиться

4 ответа

В следующий раз, когда вы захотите проверить заранее определенные макросы, поддерживаемые GCC на платформе, запустите препроцессор с флагом -dM . В нем будут перечислены все предопределенные макросы, доступные в системе. Например:

$ 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
...
93
ответ дан 27 November 2019 в 02:08
поделиться

Определите OSX с помощью макроса __ APPLE __ , если необходимо. Лучше использовать configure для обнаружения функций, если это возможно, но не все работает таким образом.

9
ответ дан 27 November 2019 в 02:08
поделиться

Я был бы более склонен проверять наличие функции, чем название платформы. Попробуйте использовать autoconf .

В противном случае это исчерпывающий список определений платформы .

Также посетите эту страницу для определения компиляторов, библиотек, архитектур и устройств.

12
ответ дан 27 November 2019 в 02:08
поделиться

I us e __ MACH __ для тестирования Mac OS X - он не на 100% уникален для Mac OS X (там все еще могут быть старые коробки NeXT!), но его достаточно, чтобы отличить Mac от Linux.

4
ответ дан 27 November 2019 в 02:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: