不同系统宏定义

Posted _夜风_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不同系统宏定义相关的知识,希望对你有一定的参考价值。

#ifdef _WIN32
   //define something for Windows (32-bit and 64-bit, this part is common)
   #ifdef _WIN64
      //define something for Windows (64-bit only)
   #else
      //define something for Windows (32-bit only)
   #endif
#elif __APPLE__
    #include "TargetConditionals.h"
    #if TARGET_IPHONE_SIMULATOR
         // ios Simulator
    #elif TARGET_OS_IPHONE
        // iOS device
    #elif TARGET_OS_MAC
        // Other kinds of Mac OS
    #else
    #   error "Unknown Apple platform"
    #endif
#elif __linux__
    // linux
#elif __unix__ // all unices not caught above
    // Unix
#elif defined(_POSIX_VERSION)
    // POSIX
#else
#   error "Unknown compiler"
#endif

值得注意的是1. _WIN32包含了windows 32和64bit,_WIN64才是windows 64bit。

2. 苹果系统都定义了__APPLE__,TARGET_OS_MAC包含了TARGET_OS_IPHONE,而TARGET_OS_IPHONE又包含了TARGET_IPHONE_SIMULATOR

 

参考来源:

1. how-do-i-check-os-with-a-preprocessor-directive

2. how-to-detect-reliably-mac-os-x-ios-linux-windows-in-c-preprocessor

3. apple TargetConditionals.h

以上是关于不同系统宏定义的主要内容,如果未能解决你的问题,请参考以下文章

我的C/C++语言学习进阶之旅 通过C++跨平台的预编译宏来区分不同的操作系统:Win32/Win64/Unix/Linux/MacOS/iOS/Android等

我的C/C++语言学习进阶之旅 通过C++跨平台的预编译宏来区分不同的操作系统:Win32/Win64/Unix/Linux/MacOS/iOS/Android等

C语言宏定义宏替换

c语言宏定义问题

常用的编译宏定义:可以让代码在不同的编译情况下执行

宏定义 #define 和常量 const 的区别