【问题标题】:Control C++ Standard Revision in visual studio 2019在 Visual Studio 2019 中控制 C++ 标准修订版
【发布时间】: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

有什么想法吗?

【问题讨论】:

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


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 2018-02-15
    相关资源
    最近更新 更多