有没有办法在vs 2013中编写代码时禁用c ++ 11功能,我希望我的代码也可以在vs2008之类的旧编译器上编译。
我厌倦了改变: project-> properties-> general-> platform tool-set,and change" Visual Studio 2013(v120)" 对于较旧的东西,但这是我在那里的下拉菜单中唯一的东西。
答案 0 :(得分:9)
你不能。
很遗憾,您无法在Visual Studio中禁用C ++ 11功能并降级为C ++ 03或C ++ 98。您可以看到哪些功能属于C ++ 11 here和here,请尽量不要使用它们。
然而,更好的选择是使用较旧的VS版本,以确保您不使用任何新功能。
就个人而言,我在Windows中使用MinGW / GCC,我可以使用编译器开关-std=c++03
,-std=c++98
或不使用-std=c++11
来禁用C ++ 11。
答案 1 :(得分:7)
如果安装了其他版本的Visual Studio,则可以选择较旧的工具集。这可能会有所帮助。
更好的解决方案,IMHO,是建立一个持续集成服务器,为所有支持的编译器,配置和平台构建代码。一旦你做了一些不支持的事情,你就会得到构建中断。理想情况下,CI服务器还会运行所有单元测试,以便您还可以查看是否有任何配置中断了测试。
答案 2 :(得分:1)
Visual Studio 2015 Update 3引入了两个新开关(/ std:c ++ 14和/ std:c ++ latest),使您可以控制要在项目中使用的C ++编程语言版本。在此更新中,如果您指定的语言版本不是任何语言版本,编译器将忽略该开关(带有警告)并默认为C ++ 14。
请参阅https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/
答案 3 :(得分:0)
使用允许显式设置已使用标准的编译器(Clang和GCC允许选择标准版本)或熟悉C ++ 11中的更改,以便在代码中避免使用它们。
如果您需要参考:http://en.cppreference.com/w/两侧清楚地显示了某个功能的标准版本。
答案 4 :(得分:0)
将Visual Studio配置为使用不支持C ++ 11功能的其他编译器。 Intellisense仍将显示C ++ 11的功能,但您可以在检查之前捕获本地编译的问题。