分享

<编译>条件编译

 waston 2020-08-24
有时候编译需要多平台运行的代码,需要一些条件编译,经常忘记,这里专门记录一下,方便下次查找。
  • 编译器
GCC
  1. #ifdef __GNUC__
  2. #if __GNUC__ >= 3 // GCC3.0以上
Visual C++
  1. #ifdef _MSC_VER
  2. #if _MSC_VER >=1000 // VC++4.0以上
  3. #if _MSC_VER >=1100 // VC++5.0以上
  4. #if _MSC_VER >=1200 // VC++6.0以上
  5. #if _MSC_VER >=1300 // VC2003以上
  6. #if _MSC_VER >=1400 // VC2005以上
Borland C++
  1. #ifdef __BORLANDC__
Cygwin
  1. #ifdef __CYGWIN__
  2. #ifdef __CYGWIN32__    //
 
MinGW
  1. #ifdef __MINGW32__
  • 操作系统
Windows
  1. #ifdef _WIN32    //32bit
  2. #ifdef _WIN64    //64bit
  3. #ifdef _WINDOWS     //图形界面程序
  4. #ifdef _CONSOLE     //控制台程序
  5. //Windows(95/98/Me/NT/2000/XP/Vista)和Windows CE都定义了
  6. #if (WINVER >= 0x030a)     // Windows 3.1以上
  7. #if (WINVER >= 0x0400)     // Windows 95/NT4.0以上
  8. #if (WINVER >= 0x0410)     // Windows 98以上
  9. #if (WINVER >= 0x0500)     // Windows Me/2000以上
  10. #if (WINVER >= 0x0501)     // Windows XP以上
  11. #if (WINVER >= 0x0600)     // Windows Vista以上
  12. //_WIN32_WINNT 内核版本
  13. #if (_WIN32_WINNT >= 0x0500) // Windows 2000以上
  14. #if (_WIN32_WINNT >= 0x0501) // Windows XP以上
  15. #if (_WIN32_WINNT >= 0x0600) // Windows Vista以上
UNIX
  1. #ifdef __unix
  2. //or
  3. #ifdef __unix__
Linux
  1. #ifdef __linux
  2. //or
  3. #ifdef __linux__
FreeBSD
  1. #ifdef __FreeBSD__
NetBSD
  1. #ifdef __NetBSD__
  • Qt特有
<qtglobal.h>定义了Q_OS_*和Q_WS_*系列用于判断操作系统。Q_CC_*系列判断编译器。
具体的可以在Qt Assistant里索引qtglobal.h查看。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多