获取 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 << "C++98\n";
中有错字。
应该是else if (__cplusplus == 199711L) std::cout << "C++98\n";
。
这仍然是VS2015中的版本,可能是因为它还没有完全支持标准。
【讨论】:
以上是关于获取 Visual Studio 使用的 C++ 标准版本的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio Express 2013(C++) 中获取特定驱动器的当前目录?
Visual Studio 2010 C++:获取 malloc 分配的内存块大小
Visual Studio C++:获取未解析的标记和未解析的链接。我该怎么办?