在Visual Studio 2013中编写代码时,是否有办法禁用C++11功能?
我希望我的代码也能在像VS2008这样的老编译器上编译。
我尝试通过以下方式更改:project->properties->general->platform tool-set
,并将"Visual Studio 2013 (v120)"
更改为更旧的东西,但这是我在那里的下拉菜单中唯一的东西。
在Visual Studio 2013中编写代码时,是否有办法禁用C++11功能?
我希望我的代码也能在像VS2008这样的老编译器上编译。
我尝试通过以下方式更改:project->properties->general->platform tool-set
,并将"Visual Studio 2013 (v120)"
更改为更旧的东西,但这是我在那里的下拉菜单中唯一的东西。
5条答案
按热度按时间mf98qq941#
你不能。
遗憾的是,您不能在Visual Studio中禁用C++11功能并降级到C 03或C 98。您可以看到哪些功能属于C11 here和here,请尽量不要使用它们。
然而,更好的选择是使用旧的VS版本,以确保您不使用任何新功能。
就我个人而言,我在Windows中使用MinGW/GCC,我可以通过使用编译器开关
-std=c++03
、-std=c++98
或不使用-std=c++11
来禁用C11。ebdffaop2#
如果您安装了其他版本的Visual Studio,则可以选择较旧的工具集。这可能会有所帮助。
一个更好的解决方案,恕我直言,是建立一个持续集成服务器,为所有受支持的编译器、配置和平台构建代码。然后,一旦你做了一些不受支持的事情,你就会得到构建中断。理想情况下,CI服务器还运行你所有的单元测试,这样你就可以看到是否有任何配置中断了你的测试。
btxsgosb3#
Visual Studio 2015 Update 3引入了两个新开关(/std:c14和/std:c latest),让你可以控制要在项目中使用的C编程语言的版本。在此更新中,如果你指定的语言版本不是这两个开关中的任何一个,则编译器将忽略该开关(并显示警告),默认为C14。
参见https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/
ut6juiuv4#
要么使用允许显式设置所用标准的编译器(Clang和GCC允许选择标准版本),要么让自己熟悉C++11中的变化,以便在代码中避免它们。
如果您需要参考:http://en.cppreference.com/w/侧面清楚地显示了某个特性是在哪个标准版本中引入的。
ppcbkaq55#
将Visual Studio配置为使用不支持C11功能的其他编译器。Intellisense仍将显示C11功能,但您可以在签入本地编译之前捕获该编译的问题。
How to use GCC with Microsoft Visual Studio?