Macros for GCC/G++ to differentiate Linux and Mac OSX?

后端 未结 4 543
独厮守ぢ
独厮守ぢ 2020-12-22 23:03

Macros for GCC/G++ to differentiate Linux and Mac OSX?

相关标签:
4条回答
  • 2020-12-22 23:25

    The next time you want to check out pre-defined macros supported by GCC on a platform, run the preprocessor with the flag -dM. It'll list out all the predefined macros available on the system. For example:

    $ 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
    ...
    
    0 讨论(0)
  • 2020-12-22 23:27

    I use __MACH__ to test for Mac OS X - it's not 100% unique to Mac OS X (there may still be some old NeXT boxes out there !) but it's good enough for telling the difference between Mac and Linux.

    0 讨论(0)
  • 2020-12-22 23:32

    I'd be more inclined to test for feature availability than platform name. Try using autoconf.

    Otherwise, this is a comprehensive list of platform defines.

    Also check out this page for defines regarding compilers, libraries, architectures and devices.

    0 讨论(0)
  • 2020-12-22 23:32

    Detect OSX with the __APPLE__ macro if you must. It's better to use configure to detect features if you can, but not everything works well that way.

    0 讨论(0)
提交回复
热议问题