• 判断编译器类型、编译器版本、操作系统。


    目录

    1. 判断编译器类型:

    2. 判断编译器版本:

    3. 判断操作系统:

    总结:




    1. 判断编译器类型:

    可以使用预定义的宏来判断编译器类型。例如,__GNUC__ 宏用于判断是否使用了GCC 编译器,_MSC_VER 宏用于判断是否使用了MSVC 编译器。

    1. #ifdef __GNUC__
    2. // 使用了GCC编译器
    3. // 可以在这里添加相应的代码
    4. #elif defined(_MSC_VER)
    5. // 使用了MSVC编译器
    6. // 可以在这里添加相应的代码
    7. #else
    8. // 其他编译器
    9. // 可以在这里添加相应的代码
    10. #endif

    2. 判断编译器版本:

    要判断编译器的版本,可以使用预定义的宏或条件编译指令,具体取决于使用的编译器。以下是示例代码,用于判断GCC和MSVC编译器的版本:

    1. #ifdef __GNUC__
    2. // 使用了GCC编译器
    3. #if __GNUC__ >= 7
    4. // GCC版本大于等于7
    5. #else
    6. // GCC版本小于7
    7. #endif
    8. #elif defined(_MSC_VER)
    9. // 使用了MSVC编译器
    10. #if _MSC_VER >= 1920
    11. // MSVC版本大于等于2019(版本号1920对应于MSVC 2019)
    12. #else
    13. // MSVC版本小于2019
    14. #endif
    15. #else
    16. // 其他编译器
    17. #endif

    3. 判断操作系统:

    要判断操作系统,可以使用预定义的宏,如 __linux___WIN32_WIN64 等。以下是示例代码,用于判断操作系统类型:
     

    1. #ifdef __linux__
    2. // Linux操作系统
    3. #elif defined(_WIN32) || defined(_WIN64)
    4. // Windows操作系统
    5. #else
    6. // 其他操作系统
    7. #endif

    总结:

    1. //GCC编译器
    2. #ifdef __GNUC__
    3. #if __GNUC__ >= 3 // GCC3.0 以上
    4. //MSVC编译器
    5. #ifdef _MSC_VER
    6. #if _MSC_VER >=1000 // VC++4.0 以上
    7. #if _MSC_VER >=1100 // VC++5.0 以上
    8. #if _MSC_VER >=1200 // VC++6.0 以上
    9. #if _MSC_VER >=1300 // VC2003 以上
    10. #if _MSC_VER >=1400 // VC2005 以上
    11. #if _MSC_VER >=1500 // VC2008 以上
    12. #if _MSC_VER >=1600 // VC2010 以上
    13. #if _MSC_VER >=1700 // VC2012 以上
    14. #if _MSC_VER >=1800 // VC2013 以上
    15. #if _MSC_VER >=1900 // VC2015 以上
    16. //Visual Studio版本与MSVC版本号的对应关系
    17. MSC 1.0 _MSC_VER == 100
    18. MSC 2.0 _MSC_VER == 200
    19. MSC 3.0 _MSC_VER == 300
    20. MSC 4.0 _MSC_VER == 400
    21. MSC 5.0 _MSC_VER == 500
    22. MSC 6.0 _MSC_VER == 600
    23. MSC 7.0 _MSC_VER == 700
    24. MSVC++ 1.0 _MSC_VER == 800
    25. MSVC++ 2.0 _MSC_VER == 900
    26. MSVC++ 4.0 _MSC_VER == 1000 (Developer Studio 4.0)
    27. MSVC++ 4.2 _MSC_VER == 1020 (Developer Studio 4.2)
    28. MSVC++ 5.0 _MSC_VER == 1100 (Visual Studio 97 version 5.0)
    29. MSVC++ 6.0 _MSC_VER == 1200 (Visual Studio 6.0 version 6.0)
    30. MSVC++ 7.0 _MSC_VER == 1300 (Visual Studio .NET 2002 version 7.0)
    31. MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio .NET 2003 version 7.1)
    32. MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005 version 8.0)
    33. MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008 version 9.0)
    34. MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010 version 10.0)
    35. MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012 version 11.0)
    36. MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013 version 12.0)
    37. MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015 version 14.0)
    38. MSVC++ 14.1 _MSC_VER == 1910 (Visual Studio 2017 version 15.0)
    39. MSVC++ 14.11 _MSC_VER == 1911 (Visual Studio 2017 version 15.3)
    40. MSVC++ 14.12 _MSC_VER == 1912 (Visual Studio 2017 version 15.5)
    41. MSVC++ 14.13 _MSC_VER == 1913 (Visual Studio 2017 version 15.6)
    42. MSVC++ 14.14 _MSC_VER == 1914 (Visual Studio 2017 version 15.7)
    43. MSVC++ 14.15 _MSC_VER == 1915 (Visual Studio 2017 version 15.8)
    44. MSVC++ 14.16 _MSC_VER == 1916 (Visual Studio 2017 version 15.9)
    45. MSVC++ 14.2 _MSC_VER == 1920 (Visual Studio 2019 Version 16.0)
    46. MSVC++ 14.21 _MSC_VER == 1921 (Visual Studio 2019 Version 16.1)
    47. MSVC++ 14.22 _MSC_VER == 1922 (Visual Studio 2019 Version 16.2)
    48. MSVC++ 14.30 _MSC_VER == 1930 (Visual Studio 2022 Version 17.0)
    49. MSVC++ 14.31 _MSC_VER == 1931 (Visual Studio 2022 Version 17.1)
    50. MSVC++ 14.32 _MSC_VER == 1932 (Visual Studio 2022 Version 17.2)
    51. //Borland C++
    52. #ifdef __BORLANDC__
    53. //Cygwin
    54. #ifdef __CYGWIN__
    55. #ifdef __CYGWIN32__
    56. //mingw
    57. #ifdef __MINGW32__
    58. //windows
    59. #ifdef _WIN32 //32bit
    60. #ifdef _WIN64 //64bit
    61. #ifdef _WINDOWS //图形界面程序
    62. #ifdef _CONSOLE //控制台程序
    63. //Windows(95/98/Me/NT/2000/XP/Vista)和Windows CE都定义了
    64. #if (WINVER >= 0x030a) // Windows 3.1以上
    65. #if (WINVER >= 0x0400) // Windows 95/NT4.0以上
    66. #if (WINVER >= 0x0410) // Windows 98以上
    67. #if (WINVER >= 0x0500) // Windows Me/2000以上
    68. #if (WINVER >= 0x0501) // Windows XP以上
    69. #if (WINVER >= 0x0600) // Windows Vista以上
    70. //_WIN32_WINNT 内核版本
    71. #if (_WIN32_WINNT >= 0x0500) // Windows 2000以上
    72. #if (_WIN32_WINNT >= 0x0501) // Windows XP以上
    73. #if (_WIN32_WINNT >= 0x0600) // Windows Vista以上

  • 相关阅读:
    SpringBoot+vue+elementui实现前后端分离的化妆品销售商城网站
    阿里云国际站实名认证上传材料填写样例(域名持有者为组织)
    MYSQL5.7下载安装详细教程
    MFC入门问题(L)
    c++对类的的详解(2)
    pywinauto:Windows桌面应用自动化测试(三)
    KT148A语音芯片常见问题集锦|硬件|软件以及注意事项-长期更新
    基于粒子群优化算法的最佳方式设置无线传感器节点的位置,以减轻由于任何能量耗尽节点而产生的覆盖空洞(Matlab代码实现)
    计算机网络:随机访问介质访问控制之令牌传递协议
    如何利用 Media Creation Tool 来创建安装介质或下载 ISO 文件
  • 原文地址:https://blog.csdn.net/clayhell/article/details/133397644