【问题标题】:What compiler is in Visual Studio 2015Visual Studio 2015 中的编译器是什么
【发布时间】:2015-10-31 08:20:27
【问题描述】:

谁能告诉我 Visual Studio 2015 为 C++ 项目内置了哪些编译器?我尝试了它并尝试了旧版本的编译器,它给了我其他编译结果。是 GNU C++ 版本 4.8.2 还是更新版本?

【问题讨论】:

  • 它是微软自己的编译器。
  • 你是怎么知道 Visual Studio 默认使用 GNU 编译器的?
  • 我不知道它的用途,我在网上搜索并没有找到任何相关的东西
  • 编译器通常称为“Visual C++ 2015”。它根本不是 GNU。它是 GNU 的替代品,由销售它的公司 Microsoft 编写。

标签: c++ visual-studio visual-c++ visual-studio-2015


【解决方案1】:

他们有自己的 Visual C++ 编译器 _____

这里是一个mapping的IDE版本到编译器版本。他们通常会随每个主要 IDE 版本发布一个主要编译器版本。

IDE Version Compiler Version
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

【讨论】:

  • @yzt 是的,这令人困惑。他们在我见过的大多数地方都宣传并将其标记为 VS2015,但例如,编译器和相关文件位于名为 Microsoft Visual Studio 14.0 的文件夹中。
  • 他们错过了一个将版本与 VS10/VC10 同步的巨大机会。 叹息...
  • 没有13.0版本; Visual Studio 2015 内部是 14.0 版。 13 被跳过。发布年份用于营销名称;版本号在内部使用。一般讨论产品时,最好使用营销名称(“Visual Studio 2015”或“Visual C++ 2015”)以避免混淆。编译器二进制文件的版本号不同(在此版本中为 19),因为编译器早于 Visual C++ 产品; Visual C++ 编译器是从早期的 C 编译器演变而来的(参见 en.wikipedia.org/wiki/Visual_C%2B%2B)。
  • 更令人困惑的是,这是 Visual Studio 版本。 VS 2015 中的实际编译器版本是“19.00”。使用cl -Bv。 VS 2012 为“17.00”,VS 2013 为“18.00”。
  • 如果您询问 Visual Studio 2015 的 $(PlatformToolset) 是什么,它将打印“v140”。对于将使用多个编译器版本构建的项目设置构建路径很有用。 (比如图书馆。)
【解决方案2】:

运行这个你可以获得一些有用的信息:

#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)

【讨论】:

    【解决方案3】:

    Visual Studio 中的 C/C++ 编译器一直是 Microsoft C++ 编译器,由 Microsoft 构建(不基于其他任何东西。)

    现在,编译器是这样命名自己的:

    Microsoft (R) C/C++ 优化编译器版本 19.00.23026

    在 VS2015 中,编译器可以针对 x86 和 x64 以及 ARM。它支持几乎所有的 C++11 和 C99,以及大部分 C++14,以及一点点 C++17(或任何时候)草案。

    【讨论】:

      【解决方案4】:

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

      另外,我喜欢 Dorin 的回答,他指出 a way 用代码检查编译器版本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-25
        • 1970-01-01
        • 2014-06-07
        • 2016-08-30
        相关资源
        最近更新 更多