VS2019如何获取C++标准库的版本
咱们在开发c++项目的过程中,经常是采用默认的c++标准库版本,有时一些新功能需要特定的标准库版,那些如何知道标准库的版以及设置标准库的版本呢?本篇记录在VS2019上查看和设置标准库的版本。
首先,查看__cplusplus宏定义数据对应的标准版本
宏定义数值 | 对应的标准 |
---|---|
199711L | C++98 |
199711L | C++03 |
201103L | C++11 |
201402L | C++14 |
201703L | C++17 |
202002L | C++20 |
202302L | C++23 |
C++98和C++03都是199711L所以这两个版本无法区分。
现在写测试代码:
#include <iostream>int main()
{std::cout << "C++ __cplusplus version: " << __cplusplus << std::endl;
#if __cplusplus == 199711Lstd::cout << "Compiling with C++ 98 or C++ 03" << std::endl;
#elif __cplusplus == 201103Lstd::cout << "Compiling with C++ 11" << std::endl;
#elif __cplusplus == 201402Lstd::cout << "Compiling with C++ 14" << std::endl;
#elif __cplusplus == 201703Lstd::cout << "Compiling with C++ 17" << std::endl;
#elif __cplusplus == 202002Lstd::cout << "Compiling with C++ 20" << std::endl;
#endifstd::cout << "Hello World!\n";
}
编译运行:
显示的是199711版本,查看设置的标准库版本,右键项目=》【属性】=》【C/C++】=》【语言】=》c++语言标准
这里默认设置的是C++ 14标准,为什么显示的是199711呢,切换成确定的标准
重新编译运行:
还是显示199711,为什么呢,
这是VS2019的一个Bug么,这里在命令行添加
右键项目=》【属性】=》【C/C++】=》【命令行】=》【其它选项】输入/Zc:__cplusplus
重新编译运行:
这次显示正常了201703表示C++ 17标准库,
切换成C++14测试:
再切换成C++20测试:
说明这些启用设置生效了。