获取 Visual Studio 使用的 C++ 标准版本

Posted

技术标签:

【中文标题】获取 Visual Studio 使用的 C++ 标准版本【英文标题】:Getting the C++ standard version Visual Studio uses 【发布时间】:2016-10-09 19:16:44 【问题描述】:

我正在使用 Visual Studio 2015 执行我的编程任务,我想知道编译器使用的是哪个版本的 C++ 标准。

谷歌搜索没有任何结果。

我测试了这些条件,但它们不能正常工作:

if (__cplusplus == 201103L) std::cout << "C++11\n";
else if (__cplusplus == 201402L) std::cout << "C+14\n";
else if (__cplusplus == 19971L) std::cout << "C++98\n";
else std::cout << "pre-standard C++\n";

输出为pre-standard。但是,我不认为我的 C++ 标准是 pre-standard,因为我可以在指定类型时使用 auto,它只能在 C++11 中使用。

那么,有没有什么简单的方法可以在 Visual Studio 中获取 C++ 标准?

【问题讨论】:

我不知道以编程方式获取值的简单方法,特别是因为它可能支持特定标准的某些但不是全部功能,但您可以在此处查看每个标准迭代中它支持的功能:msdn.microsoft.com/en-gb/library/hh567368.aspx 你试过打印出宏__cplusplus的值吗? 这里有各种宏来测试实现的功能:en.cppreference.com/w/User:D41D8CD98F/feature_testing_macros。我不知道 VS 是否实现了这些宏。 我认为 VS 可以,但因为它从不完全符合 C++ 标准,所以它可能有一些中间值:) ***.com/a/27459246/560648 【参考方案1】:

else if (__cplusplus == 19971L) std::cout &lt;&lt; "C++98\n"; 中有错字。 应该是else if (__cplusplus == 199711L) std::cout &lt;&lt; "C++98\n";

这仍然是VS2015中的版本,可能是因为它还没有完全支持标准。

【讨论】:

以上是关于获取 Visual Studio 使用的 C++ 标准版本的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio Express 2013(C++) 中获取特定驱动器的当前目录?

Visual Studio 2010 C++:获取 malloc 分配的内存块大小

如何获取 Visual Studio C++ 工具集标签

Visual Studio C++:获取未解析的标记和未解析的链接。我该怎么办?

Visual Studio C++ 标准正则表达式获取标签直到空格

如何跟踪 Visual Studio 2017(C++)中的内存使用情况?