在 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 -> C/C++ -> 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