如何限制Visual Studio 2017的MSVC仅支持C++11特性,禁用C++14/17?
如何限制MSVC 14.1仅支持C++11特性
当然可以做到!针对你使用的MSVC++ 14.1(Visual Studio 2017 15.0),以下是两种可靠的方法来强制编译器仅遵循C11标准,禁用C14及更高版本的特性:
1. 通过Visual Studio项目设置配置
- 右键你的项目,选择「属性」打开项目属性窗口
- 导航到「配置属性」→「C/C++」→「语言」
- 在「C语言标准」下拉菜单中,选择**ISO C11 标准 (/std:c++11)**
- (可选但推荐)如果想要更严格地遵循标准,禁用MSVC的非标准扩展,可以在「配置属性」→「C/C++」→「命令行」中添加额外参数
/permissive-
2. 通过命令行编译配置
如果你直接使用cl.exe命令行编译代码,只需在编译命令中添加/std:c++11参数即可:
cl.exe /std:c++11 /permissive- your_source.cpp
注意事项
- 指定
/std:c++11后,编译器会拒绝编译C++14及以后版本的特性(比如auto返回类型推导、lambda捕获表达式的初始化、结构化绑定等),一旦代码中出现这些特性会直接抛出编译错误。 - MSVC 14.1完全支持
/std:c++11选项,这个参数从Visual Studio 2015开始就已经引入,所以你使用的2017版本完全兼容。
内容的提问来源于stack exchange,提问作者znosaj88
相关产品推荐
相关产品推荐

