我是靠谱客的博主 可爱蓝天,最近开发中收集的这篇文章主要介绍linux, windows, mac, ios等平台GCC预编译宏判断,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

转自:linux, windows, mac, ios等平台GCC预编译宏判断


写跨平台c/c++程序的时候,需要搞清各平台下面的预编译宏,区分各平台代码。而跨平台c/c++编程,GCC基本在各平台都可以使用。整理了一份各平台预编译宏的判断示例。

需要注意几点:


  1. * windows32/64平台_WIN32都会被定义,而_WIN64只在64位windows上定义,因此要先判断_WIN64
  2. * 所有的apple系统都会定义 __APPLE__,包括MacOSX和iOS
  3. * TARGET_IPHONE_SIMULATOR 是 TARGET_OS_IPHONE 的子集,
  4. TARGET_OS_IPHONE 是 TARGET_OS_MAC的子集。也就是说iOS模拟器上会同时定义这三个宏。因此判断的时候要先判断子集。
  5. * 另外mac上可以用以下命令行获取GCC定义的预编译宏:
  6. gcc - arch i386 -dM - E - < /dev/ null | sort (i386可替换为arm64等)

参考示例:
(来自 https://stackoverflow.com/questions/5919996/how-to-detect-reliably-mac-os-x-ios)


  1. #ifdef _WIN32
  2. //define something for Windows (32-bit and 64-bit, this part is common)
  3. #ifdef _WIN64
  4. //define something for Windows (64-bit only)
  5. #else
  6. //define something for Windows (32-bit only)
  7. #endif
  8. #elif __APPLE__
  9. #include "TargetConditionals.h"
  10. #if TARGET_IPHONE_SIMULATOR
  11. // iOS Simulator
  12. #elif TARGET_OS_IPHONE
  13. // iOS device
  14. #elif TARGET_OS_MAC
  15. // Other kinds of Mac OS
  16. #else
  17. # error "Unknown Apple platform"
  18. #endif
  19. #elif __ANDROID__
  20. // android
  21. #elif __linux__
  22. // linux
  23. #elif __unix__ // all unices not caught above
  24. // Unix
  25. #elif defined(_POSIX_VERSION)
  26. // POSIX
  27. #else
  28. # error "Unknown compiler"
  29. #endif

最后

以上就是可爱蓝天为你收集整理的linux, windows, mac, ios等平台GCC预编译宏判断的全部内容,希望文章能够帮你解决linux, windows, mac, ios等平台GCC预编译宏判断所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部