Visual Studio 2015 使用的编译器是哪个?

23

有人能告诉我 Visual Studio 2015 中用于C++项目的内置编译器是什么吗?我已经尝试使用它和旧版本编译器,但得到了其他编译结果。它是否为 GNU C++ 版本 4.8.2 或更新版本?


3
这是微软自己的编译器。 - john
1
你是怎么想到 Visual Studio 默认使用 GNU 编译器的呢? - Christian Hackl
我不知道它使用了什么,我在网上搜索也没有找到任何相关的信息。 - MaxDevelop
1
编译器通常被称为“Visual C++ 2015”。它与GNU完全不同。这是由微软编写的替代品,微软是销售该产品的公司。 - Drew Dormann
4个回答

40

他们有自己的编译器,称为Visual C++ ____。

这是IDE版本与编译器版本的映射。他们通常会随着每个主要的IDE版本发布一个主要的编译器版本。

IDE 版本 编译器版本
Visual Studio 2005 Visual C++ 8.0
Visual Studio 2008 Visual C++ 9.0
Visual Studio 2010 Visual C++ 10.0
Visual Studio 2012 Visual C++ 11.0
Visual Studio 2013 Visual C++ 12.0
Visual Studio 2015 Visual C++ 14.0
Visual Studio 2017 Visual C++ 14.1
Visual Studio 2019 Visual C++ 14.2
Visual Studio 2022 Visual C++ 14.3

因此,明确回答您的问题,Visual Studio 2015使用编译器Visual C++ 14.0。


1
@yzt 是的,这很令人困惑。在我看到的大多数地方,它们都将其作为 VS2015 进行宣传和标记,但例如,编译器和相关文件位于名为“Microsoft Visual Studio 14.0”的文件夹中。 - R2-Dequeue
8
他们错失了一个与VS10/VC10版本同步的巨大机会。叹气... - yzt
8
没有13.0版本,Visual Studio 2015在内部被称为14.0版本。跳过了13。发布年份用于营销名称,版本号用于内部使用。通常在讨论产品时,最好使用营销名称(“Visual Studio 2015”或“Visual C++ 2015”)以避免混淆。编译器二进制文件的版本号不同(此版本为19),因为编译器早于Visual C++产品而存在;Visual C++编译器是由早期的C编译器演变而来(请参见https://en.wikipedia.org/wiki/Visual_C%2B%2B)。 - James McNellis
4
为了让事情更加混乱,这是Visual Studio版本。 在VS 2015中实际的编译器版本是“19.00”。 使用“cl -Bv”查询。在VS 2012中为“17.00”,在VS 2013中为“18.00”。 - Chuck Walbourn
3
如果你询问Visual Studio 2015中的$(PlatformToolset)是什么,它会输出"v140"。这对于在使用多个编译器版本进行构建的项目(如库)中设置构建路径非常有用。 - Meta
显示剩余3条评论

13

您可以运行这个命令来获取一些有用的信息:

#include <stdio.h>

int main()
{
    printf("_MSC_VER : %d \n", _MSC_VER);
    printf("_MSC_FULL_VER : %d \n", _MSC_FULL_VER);
    printf("_MSC_BUILD : %d \n", _MSC_BUILD);

    #ifdef _MSVC_LANG
        printf("_MSVC_LANG : C++%d \n", (_MSVC_LANG/100)%2000);
    #endif

    return 0;
}

常见的MSVC版本:

MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008)

MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010)

MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012)

MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013)

MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015)

MSVC++ 14.1 _MSC_VER == 1910 (Visual Studio 2017)

宏定义解释:

_MSVC_LANG:被定义为指定编译器所针对的C++语言标准的整数字面量。

_MSC_VER :包含主版本号和次版本号,表示为一个整数(例如,“1500”表示版本15.00)

_MSC_FULL_VER:包含主版本号、次版本号和构建号,表示为一个整数(例如,“150020706”表示版本15.00.20706)

_MSC_BUILD:包含主版本号、次版本号和构建号后的修订号(例如,“1”是修订号1,如15.00.20706.01)


9
Visual Studio中的C/C++编译器始终是微软公司自主开发的Microsoft C++ Compiler, 不是基于其他任何工具构建而成。目前,编译器自称为:Microsoft (R) C/C++优化编译器版本19.00.23026。在VS2015中,编译器支持x86、x64以及ARM架构,并且支持几乎所有的C++11和C99特性,部分支持C++14,还有一些 C++17(或其他草案)的新特性。

0

基本上,Visual Studio 2015 支持编译器 Visual C++ 14.0。但是,您可以跟踪这里已经实现了哪些 C++ 14.0 的功能的详细信息here

此外,我喜欢 Dorin 的回答,他指出了一种通过代码检查编译器版本的方法a way


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接