首页 > 其他分享 >详解 Visual Studio、MSVC、编译器版本,看完就不再困惑啦!

详解 Visual Studio、MSVC、编译器版本,看完就不再困惑啦!

时间:2024-09-05 09:51:15浏览次数:3  
标签:版本号 Visual 编译器 Studio 版本 MSVC

在这里插入图片描述

新手在刚使用 Visual Studio 开发 C++ 应用程序时往往会对其版本产生困惑,包括 Visual Studio 版本、MSVC 版本、工具集版本等等。因此本文尝试给大家解释一下 Visual Studio 不同版本号的对应关系。

以 Visual Studio 2022 为例,版本信息包括:

  • Visual Studio 发布年份(营销版本号),例如 Visual Studio 2022
  • Visual Studio 的实际版本号,例如 Visual Studio 17.0
  • Visual C++(MSVC)版本,例如 MSVC 14.30
  • 工具集(Toolset)版本,例如 toolset 143
  • 编译器版本,例如 cl.exe 19.30

Visual Studio 版本

我相信大多数人首先看到的是 Visual Studio 的发布年份,因为 Microsoft 官方就是这么宣传的。例如你可以在官网下载页面看到 Visual Studio 2022、Visual Studio 2019 等等。

但其实 Visual Studio 的版本也有一个更加普遍的 major.minor 版本控制方案,主版本号会在每个发布年份递增。例如 VS 2010 是版本 10,VS 2017 是版本 15,VS 2019 是版本 16,VS 2022 是版本 17。所以,如果客户跟你说:“我用的是 15 版本”,那就意味着它是 Visual Studio 2017。

请注意,Visual Studio 版本的年份和主要版本之间没有任何关联,只是 Visual Studio 2010 恰好也是版本 10。

当然,除了主版本号,Visual Studio 还有次版本号。下表列出了目前主要版本的对应关系。

发布年份 实际版本号
Visual Studio 2017 15.0
  15.3
Visual Studio 2019 16.0
  16.1
Visual Studio 2022 17.0
  17.1

Visual C++ 版本

Microsoft Visual C++,又名 MSVC,虽然它作为 Visual Studio 的一部分跟随 Visual Studio 一同发布,但它也有自己的版本控制方案。值得一提的是,MSVC 的主版本号表示 ABI 兼容性,这意味着使用同一主版本号 MSVC 编译的东西可以与使用相同主版本号的任意其他 MSVC 编译的东西链接(有一些限制)。

幸运的是,MSVC 的主要版本号比 Visual Studio 版本本身更少被调整。到 Visual Studio 2022 为止,微软官方都将 MSVC 的主要版本保持在了 14,而次要版本的第一个数字似乎在每个主要版本的 Visual Studio 中都有所改变。

下表列出了 Visual Studio 和 MSVC 版本的对应关系。

发布年份 实际版本号 MSVC 版本
Visual Studio 2017 15.0 14.1
  15.3 14.11
Visual Studio 2019 16.0 14.20
  16.1 14.21
Visual Studio 2022 17.0 14.30
  17.1 14.31

链接器(link.exe)也使用 Visual C++ 版本号作为它的版本号。例如 Visual C++ 14.32,你可能会看到 link.exe 版本号为 14.32.31332.0

C++ 工具集版本

与 MSVC 版本号密切相关的是 C++ 工具集(toolset)版本号。从微软官方的文章来看,工具集版本似乎是由 MSVC 主要版本和 MSVC 次要版本的第一位数字组成。

我整理到下面表格,方便你能看出来它们之间的关系。

发布年份 实际版本号 MSVC 版本 工具集版本
Visual Studio 2017 15.0 14.1 141
  15.3 14.11 141
Visual Studio 2019 16.0 14.20 142
  16.1 14.21 142
Visual Studio 2022 17.0 14.30 143
  17.1 14.31 143

编译器版本

最后是编译器的版本,在这里特指 cl.exe 的版本,例如 19.16.27048。并且这个 major.minor 版本号与 _MSC_VER 宏定义相关联,这意味着你可以在源代码中检查它。例如,cl.exe 版本 19.21 对应的 _MSC_VER 宏为 1921。

你可以通过下面代码获取当前所使用的 Visual Studio 编译器的版本:

#include <iostream>

int main()
{
    std::cout << "Version: " << _MSC_VER << std::endl;
    return 0;
}

下表列出了 Visual Studio、MSVC、工具集以及编译器版本的对应关系。

发布年份 实际版本号 MSVC 版本 工具集版本 编译器版本
Visual Studio 2017 15.0 14.1 141 19.10
  15.3 14.11 141 19.11
Visual Studio 2019 16.0 14.20 142 19.20
  16.1 14.21 142 19.21
Visual Studio 2022 17.0 14.30 143 19.30
  17.1 14.31 143 19.31

基于此关系,你可以在源代码中通过 _MSC_VER 宏来区分不同版本,例如只有在足够新的 Visual Studio 编译环境下才编译某些东西,例如 #if _MSC_VER >= 1930

参考下面示例代码:

#include <iostream>

int main()
{
#if _MSC_VER >= 1930
    std::cout << "Visual Studio 2022" << std::endl;
#elif _MSC_VER >= 1920
    std::cout << "Visual Studio 2019" << std::endl;
#elif _MSC_VER >= 1910
    std::cout << "Visual Studio 2017" << std::endl;
#elif _MSC_VER >= 1900
    std::cout << "Visual Studio 2015" << std::endl;
#elif _MSC_VER >= 1800
    std::cout << "Visual Studio 2013" << std::endl;
#elif _MSC_VER >= 1700
    std::cout << "Visual Studio 2012" << std::endl;
#elif _MSC_VER >= 1600
    std::cout << "Visual Studio 2010" << std::endl;
#else
    std::cout << "Unknown Version" << std::endl;
#endif
    return 0;
}
  •  

小结

本文介绍了 Windows 集成开发环境 Visual Studio 令人混淆的版本号关系,横向对比了 MSVC、工具集以及编译器的版本号,并通过示例演示了如何在源代码中判断当前版本。希望对你有所帮助!

 

标签:版本号,Visual,编译器,Studio,版本,MSVC
From: https://www.cnblogs.com/lidabo/p/18397755

相关文章

  • 编译原理项目——C++实现C语言编译器输出为gcc级汇编(代码/报告材料)
    完整的代码材料见文章末尾以下为核心内容和部分结果项目介绍function.cpp实现了共有的函数lexer.cpp词法分析器get_predict_table.cpp获取预测分析表LR.cpp语法分析generate.cpp语义分析中间代码生成to_asm.cpp目标代码生成部分核心代码LR分析#include"co......
  • 2024最新最全【Android Studio 】下载及安装和【Gradle配置】零基础入门到精通
    文章目录下载安装修改Sdk的位置创建项目修改Gradle的位置查看AS版本工具栏–View项工具栏–Build下的功能说明BuildVariants视图说明下载模拟器(avd)/安卓虚拟设备屏幕熄灭功能关闭虚拟设备功能删除自己开发的应用软件将开发的应用运行到虚拟设备上。修改模拟器的位置下......
  • 安装Android Studio及第一个Android工程可能遇到的问题
    AndroidStudio版本众多,电脑操作系统、电脑型号、电脑硬件也是多种多样,幸运的半个小时内可以完成安装,碰到不兼容的电脑,一天甚至更长时间都无法安装成功。Android安装及第一个Android工程分为4个步骤,为什么放到一起讲,因为只有Android的第一个工程运行到虚拟机上,Android的开......
  • S-Clustr(影子集群) Simple SCC伪代码编译器,工业控制DSL结构语言,递归函数调用
    项目地址:https://github.com/MartinxMax/S-Clustr/releases200S-ClustrSimpleDSL语法内置函数示例RUN(启动设备)RUN:<ID>STOP(停止设备)STOP:<ID>TIME(MS延时)TIME:<Delay/Ms>函数示例DEF(定义函数名,空形参)DEFFunction:DEF(函数名,带形参)DEFFunction:var,......
  • 编程利器-Visual Studio Code
    前言:在日益繁忙的工作环境中,选择合适的编程工具已成为提升开发者工作效率的关键。不同的工具能够帮助我们简化代码编写、自动化任务、提升调试速度,甚至让团队协作更加顺畅。那么,哪款编程工具让你的工作效率翻倍?是智能的代码编辑器,强大的版本控制工具,还是那些让你事半功倍的自......
  • AURIX™ Development Studio1.10.2(ADS)安装使用教程
    零、介绍AURIX™DevelopmentStudio是Infineon为TriCore™-basedAURIX™microcontroller系列车规单片机设计的一款免费IDE(集成开发环境),基于EclipseIDE开发。其包含了C编译器、TASKING调试器、多核调试器、iLLD库等功能。用户可通过AURIX™DevelopmentStudio-InfineonT......
  • 人工智能环境与编译器安装
    1.环境与编译器安装本文是为没有Python基础的同学,学习Python相关语法知识准备的1.Python环境安装第一步:进入【Python官网】第二步:选择你的系统,如果是Windows系统直接点击下载即可,否则选项你对应的操作系统Linux/UNIX、macOS第三步:选择合适Python版本包(一般不要选择最新......
  • Visual Studio 2022护眼模式
    工具->选项->环境->字体和颜色显示其设置:文本编辑器字体(粗体表示等宽字体):Consolas(等宽字体)大小:10显示项:纯文本项前景:默认值项背景:自定义自定义的项背景:设置一个即可(1)色调:85    饱和度:123    亮度:205(2)红:199    绿:237    蓝:2......
  • (多模态)MedM2G: Unifying Medical Multi-Modal Generation via CrossGuided Diffusion
    1.摘要医学生成模型以其高质量的样本生成能力而闻名,加速了医学应用的快速增长。然而,目前的研究主要集中在针对不同医疗任务的单独医学生成模型上,受限于医学多模态知识的不足,制约了医学的综合诊断。在本文中,我们提出MedM2G,即医学多模态生成框架,其关键创新是在统一模型内对齐......
  • c语言编译器IDE的6键钢琴程序代码
    #include<stdio.h>#include<SDL2/SDL.h>#include<SDL2/SDL_mixer.h>//FunctionforloadingmusictoMix_MusicstaticMix_Music*loadMusic(constchar*path){Mix_Music*music=Mix_LoadMUS(path);if(music==NULL){fprintf(stderr,“M......