当前位置: 首页 > news >正文

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

目录

1. 判断编译器类型:

2. 判断编译器版本:

3. 判断操作系统:

总结:




1. 判断编译器类型:

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

#ifdef __GNUC__// 使用了GCC编译器// 可以在这里添加相应的代码
#elif defined(_MSC_VER)// 使用了MSVC编译器// 可以在这里添加相应的代码
#else// 其他编译器// 可以在这里添加相应的代码
#endif

2. 判断编译器版本:

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

#ifdef __GNUC__// 使用了GCC编译器#if __GNUC__ >= 7// GCC版本大于等于7#else// GCC版本小于7#endif
#elif defined(_MSC_VER)// 使用了MSVC编译器#if _MSC_VER >= 1920// MSVC版本大于等于2019(版本号1920对应于MSVC 2019)#else// MSVC版本小于2019#endif
#else// 其他编译器
#endif

3. 判断操作系统:

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

#ifdef __linux__// Linux操作系统
#elif defined(_WIN32) || defined(_WIN64)// Windows操作系统
#else// 其他操作系统
#endif

总结:

//GCC编译器
#ifdef __GNUC__
#if __GNUC__ >= 3   // GCC3.0  以上//MSVC编译器
#ifdef _MSC_VER
#if _MSC_VER >=1000 // VC++4.0 以上
#if _MSC_VER >=1100 // VC++5.0 以上
#if _MSC_VER >=1200 // VC++6.0 以上
#if _MSC_VER >=1300 // VC2003  以上
#if _MSC_VER >=1400 // VC2005  以上
#if _MSC_VER >=1500 // VC2008  以上
#if _MSC_VER >=1600 // VC2010  以上
#if _MSC_VER >=1700 // VC2012  以上
#if _MSC_VER >=1800 // VC2013  以上
#if _MSC_VER >=1900 // VC2015  以上//Visual Studio版本与MSVC版本号的对应关系
MSC    1.0   _MSC_VER == 100
MSC    2.0   _MSC_VER == 200
MSC    3.0   _MSC_VER == 300
MSC    4.0   _MSC_VER == 400
MSC    5.0   _MSC_VER == 500
MSC    6.0   _MSC_VER == 600
MSC    7.0   _MSC_VER == 700
MSVC++ 1.0   _MSC_VER == 800
MSVC++ 2.0   _MSC_VER == 900
MSVC++ 4.0   _MSC_VER == 1000 (Developer Studio 4.0)
MSVC++ 4.2   _MSC_VER == 1020 (Developer Studio 4.2)
MSVC++ 5.0   _MSC_VER == 1100 (Visual Studio 97 version 5.0)
MSVC++ 6.0   _MSC_VER == 1200 (Visual Studio 6.0 version 6.0)
MSVC++ 7.0   _MSC_VER == 1300 (Visual Studio .NET 2002 version 7.0)
MSVC++ 7.1   _MSC_VER == 1310 (Visual Studio .NET 2003 version 7.1)
MSVC++ 8.0   _MSC_VER == 1400 (Visual Studio 2005 version 8.0)
MSVC++ 9.0   _MSC_VER == 1500 (Visual Studio 2008 version 9.0)
MSVC++ 10.0  _MSC_VER == 1600 (Visual Studio 2010 version 10.0)
MSVC++ 11.0  _MSC_VER == 1700 (Visual Studio 2012 version 11.0)
MSVC++ 12.0  _MSC_VER == 1800 (Visual Studio 2013 version 12.0)
MSVC++ 14.0  _MSC_VER == 1900 (Visual Studio 2015 version 14.0)
MSVC++ 14.1  _MSC_VER == 1910 (Visual Studio 2017 version 15.0)
MSVC++ 14.11 _MSC_VER == 1911 (Visual Studio 2017 version 15.3)
MSVC++ 14.12 _MSC_VER == 1912 (Visual Studio 2017 version 15.5)
MSVC++ 14.13 _MSC_VER == 1913 (Visual Studio 2017 version 15.6)
MSVC++ 14.14 _MSC_VER == 1914 (Visual Studio 2017 version 15.7)
MSVC++ 14.15 _MSC_VER == 1915 (Visual Studio 2017 version 15.8)
MSVC++ 14.16 _MSC_VER == 1916 (Visual Studio 2017 version 15.9)
MSVC++ 14.2  _MSC_VER == 1920 (Visual Studio 2019 Version 16.0)
MSVC++ 14.21 _MSC_VER == 1921 (Visual Studio 2019 Version 16.1)
MSVC++ 14.22 _MSC_VER == 1922 (Visual Studio 2019 Version 16.2)
MSVC++ 14.30 _MSC_VER == 1930 (Visual Studio 2022 Version 17.0)
MSVC++ 14.31 _MSC_VER == 1931 (Visual Studio 2022 Version 17.1)
MSVC++ 14.32 _MSC_VER == 1932 (Visual Studio 2022 Version 17.2)//Borland C++
#ifdef __BORLANDC__//Cygwin
#ifdef __CYGWIN__
#ifdef __CYGWIN32__//mingw
#ifdef __MINGW32__//windows
#ifdef _WIN32           //32bit
#ifdef _WIN64           //64bit
#ifdef _WINDOWS         //图形界面程序
#ifdef _CONSOLE         //控制台程序//Windows(95/98/Me/NT/2000/XP/Vista)和Windows CE都定义了
#if (WINVER >= 0x030a)  // Windows 3.1以上
#if (WINVER >= 0x0400)  // Windows 95/NT4.0以上
#if (WINVER >= 0x0410)  // Windows 98以上
#if (WINVER >= 0x0500)  // Windows Me/2000以上
#if (WINVER >= 0x0501)  // Windows XP以上
#if (WINVER >= 0x0600)  // Windows Vista以上//_WIN32_WINNT 内核版本
#if (_WIN32_WINNT >= 0x0500) // Windows 2000以上
#if (_WIN32_WINNT >= 0x0501) // Windows XP以上
#if (_WIN32_WINNT >= 0x0600) // Windows Vista以上

http://www.lryc.cn/news/177973.html

相关文章:

  • 百度实习一面(知识图谱部门)
  • Oracle 数据库查询优化
  • 时序预测 | MATLAB实现POA-CNN-GRU鹈鹕算法优化卷积门控循环单元时间序列预测
  • Java技术接单
  • 多家企业发布基于大模型的AI产品,大模型应用落地哪家强?
  • 如何在小程序中获取用户昵称、电话号,头像
  • 26606-2011 工业用氰乙酸甲酯 阅读笔记
  • 微软开源 windows-drivers-rs, 用 Rust 开发 Windows 驱动程序
  • Java中判断字符串是否为合法数字
  • [LeetCode] Hard-2251. 花期内花的数目 - 二分查找/有序数组
  • VUE3父子组件传值defineProps() 和 defineEmits()
  • OmniPlan Pro 4 for Mac:引领项目管理的创新与高效
  • 封装JDBC,实现简单ORM框架
  • 监控与运维,主流it运维监控工具
  • 基于Matlab实现全局优化算法
  • Kafka 笔记 (Non-Root/Container)
  • 【Pytest】跳过执行之@pytest.mark.skip()详解
  • Android Framework 常见解决方案(22)防应用被LowMemoryKillerDaemon(LMKD)杀掉
  • Vue - 组件递归
  • 微信小程序案例2-1:学生信息
  • 小程序如何设置余额充值
  • vue项目打包成H5apk中使用语音播放
  • windows:批处理bat实例
  • websocket php教程
  • 【操作系统】调度算法的评价指标和三种调度算法
  • CSS详细基础(三)复合选择器
  • LeetCode【2251. 花期内花的数目】
  • 大数据(九):数据可视化(一)
  • 讲讲项目里的仪表盘编辑器(二)
  • 文心一言 VS 讯飞星火 VS chatgpt (102)-- 算法导论9.3 8题