在 Visual Studio 2019 中控制 C++ 标准修订版

Posted

技术标签:

【中文标题】在 Visual Studio 2019 中控制 C++ 标准修订版【英文标题】:Control C++ Standard Revision in visual studio 2019 【发布时间】:2020-11-15 06:16:39 【问题描述】:

所以我将 Visual Studio 2019 用于我的 C++ 项目,我想在编译时控制 C++ 版本。我已将其从“项目 > 属性 > C/C++ > 语言 > C++ 语言标准 >”

它在Default (ISO C++14 Standard)

我用这个来检查版本:

#include<iostream>
using namespace std;

int main() 
    cout << __cplusplus << endl;

但是输出是199711

我把C++语言标准改成了ISO C++17 Standard (/std:c++17)

__cplusplus 的输出始终是199711

有什么想法吗?

【问题讨论】:

您需要一个额外的选项。 docs.microsoft.com/en-us/cpp/build/reference/… 【参考方案1】:

根据Microsoft Docs:

__cplusplus 预处理宏通常用于报告支持 对于特定版本的 C++ 标准。因为现有的很多 代码似乎取决于此宏匹配“199711L”的值, 编译器不会更改宏的值,除非您 通过使用 /Zc:__cplusplus 编译器选项显式选择加入。这 /Zc:__cplusplus 选项从 Visual Studio 2017 开始可用 15.7 版,默认关闭。在早期版本的 Visual Studio,默认情况下,或者如果指定了 /Zc:__cplusplus-,则 Visual Studio 为 __cplusplus 预处理器返回值“199711L” 宏。 /permissive- 选项不启用 /Zc:__cplusplus。

因此,您可以将/Zc:__cplusplus/Zc:__cplusplus- 添加到Configuration Properties -&gt; C/C++ -&gt; Command Line 中的Additional options

【讨论】:

以上是关于在 Visual Studio 2019 中控制 C++ 标准修订版的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 2019 中调试时将输入重定向到 .NET Core 控制台应用程序

在 Visual Studio 2019 中找不到 .NET 5.0 控制台应用程序项目模板

Visual Studio 2019 不会调试 Azure Function V2

使用 Visual Studio C++ 在控制台中控制字体和字符集

怎么彻底删除visual studio

使用Visual Studio2019创建C#项目(窗体应用程序控制台应用程序Web应用程序)