linux, windows, mac, ios等平台GCC预编译宏判断
2017-09-27 14:29
1636 查看
写跨平台c/c++程序的时候,需要搞清各平台下面的预编译宏,区分各平台代码。而跨平台c/c++编程,GCC基本在各平台都可以使用。整理了一份各平台预编译宏的判断示例。
需要注意几点:
参考示例:
(来自 https://stackoverflow.com/questions/5919996/how-to-detect-reliably-mac-os-x-ios)
需要注意几点:
* windows32/64平台_WIN32都会被定义,而_WIN64只在64位windows上定义,因此要先判断_WIN64 * 所有的apple系统都会定义 __APPLE__,包括MacOSX和iOS * TARGET_IPHONE_SIMULATOR 是 TARGET_OS_IPHONE 的子集, TARGET_OS_IPHONE 是 TARGET_OS_MAC的子集。也就是说iOS模拟器上会同时定义这三个宏。因此判断的时候要先判断子集。 * 另外mac上可以用以下命令行获取GCC定义的预编译宏: gcc -arch i386 -dM -E - < /dev/null | sort (i386可替换为arm64等)
参考示例:
(来自 https://stackoverflow.com/questions/5919996/how-to-detect-reliably-mac-os-x-ios)
#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 __ANDROID__ // android #elif __linux__ // linux #elif __unix__ // all unices not caught above // Unix #elif defined(_POSIX_VERSION) // POSIX #else # error "Unknown compiler" #endif
相关文章推荐
- linux, windows, mac, ios等平台GCC预编译宏判断
- MP4是最值得你选用的格式,全平台通用windows、linux、ios、mac、android、H5
- 全平台最佳密码管理工具大全:支持 Windows、Linux、Mac、Android、iOS 以及企业应用
- GuiLite-全平台UI框架(目前已经支持: iOS,Android, Linux, Windows,Mac,VR)
- linux, windows, mac, ios等平台GCC预编译宏判断
- 全平台最佳密码管理工具大全:支持 Windows、Linux、Mac、Android、iOS 以及企业应用
- ios 5.1.1完美越狱工具Absinthe 2.0windows/mac/linux版本下载地址lwxshow.com首发,新增迅雷下载
- TeamViewer安装 windows linux MacOS chrome android ios
- 不同平台windows、linux、mac 上换行符的问题
- 不同平台windows、linux、mac 上换行符的问题
- Cocos2d-x--iOS平台lua加密成luac资源方法和Jsc文件<MAC平台开发试用--windows平台暂未研究>
- 不同平台windows、linux、mac 上换行符的问题
- dotnet core多平台开发体验(mac os x 、windows、linux)
- iConvert Icons 图标转换生成利器,支持Windows, Mac OS X, Linux, iOS,和Android等系统
- 不同平台(mac、windows—wpf、web、ios、android)下实现页面的转场动画
- [C] 跨平台使用TCHAR——让Linux等平台也支持tchar.h,解决跨平台时的格式控制字符问题,多国语言的同时显示(兼容vc/gcc/bcb,支持Windows/Linux/Mac)
- EasyRTMP实现的一套简单、高效、易用的全平台(Windows/Linux/ARM/Android/iOS)RTMP直播推送库
- Scrapy的安装--------Windows、linux、mac等操作平台
- [C] 跨平台使用TCHAR——让Linux等平台也支持tchar.h,解决跨平台时的格式控制字符问题,多国语言的同时显示(兼容vc/gcc/bcb,支持Windows/Linux/Mac)
- EasyRTMP实现的一套简单、高效、易用的全平台(Windows/Linux/ARM/Android/iOS)RTMP直播推送库