在VS2012上禁用C++11功能

6

在VS2012上是否有可能禁用C++11的功能?我的代码还没有准备好使用它,我不想引入更多混乱。


这里提到的方法(即通过VS2012使用VS2008编译器)在评论中有帮助吗? - juan.facorro
我也想知道在VS2010上是否可能,抱歉打扰了。 - Twifty
https://dev59.com/c3A65IYBdhLWcg3w-jym - Sadeq
6
如果你的代码“还没准备好”,那么它一定是一个严重的hack。如果代码需要在其他编译器上编译,那么有必要警告使用C++11,但禁用C++11是没有必要的。 - Ben Voigt
我找不到答案,所以我打开了这个链接:http://stackoverflow.com/questions/17753568/is-there-a-way-to-specify-c-compatibility-level-for-microsoft-c-compiler - Csaba Toth
显示剩余2条评论
3个回答

0

自Visual C++ 2015更新3版起,现在可以为语言行为指定语言版本(显然它不仅影响符合性检查):

https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/

很不幸,唯一的选项是“C++14”(不完全准确,它包括之前发布的 C++14 特性以及后续的一些特性),以及“C++ Latest”(C++14 加上 C++17 和提案的部分实现,但不包括“实验性”的特性)

相应的命令行开关为:

  • /std:c++14
  • /std:c++latest

0

右键单击项目 -> 属性 -> 常规 -> 平台工具集 -> Visual Studio 2010

这将使用Visual Studio 2010编译器编译该项目。


4
但是,VS2010对C++11的支持是有限的。 - Twifty
1
你需要在你的系统上安装VS'10编译器。它不包含在VS'12中。 - alexbuisson
@Waldermort 还有一个没有任何C++11的VS2008。 - Caesar
1
让我感到困惑的是,随着编译器变得越来越好,IDE变得越来越臃肿,他们为什么会给你一个选项来结合两者中最糟糕的——新的IDE+旧的编译器——而不是反过来呢?或者有人写了一个针对VC++ 2010的目标包,可以运行2012编译器吗? - Ben Voigt
@BenVoigt 我并不是说它是世界上最好的东西,我只是说它是问题的一个选项。 - Caesar
显示剩余2条评论

-1

是的,您可以在Visual C++编译器上禁用C++11功能。使用/Tc编译器选项将导致C++11语法错误。

不幸的是,C++03和C++98也会受到影响。剩下的只有C89,以及一些Microsoft扩展,如支持//单行注释


4
我认为有必要进一步澄清Tc将降级为C的情况。这不仅是失去了一些C++,而是完全失去了C++。 - Csaba Toth
@Csaba:是的,没错。我的第二段话对你有其他的意思吗? - Ben Voigt
1
@JohnDibling:可能是因为我没有回答问题,而是回答了显然OP想问的问题。但我认为“如何在C++03模式下运行Visual C++ 2012?”没有任何答案。 - Ben Voigt
@BenVoigt 我没有给你的回答点踩。我承认,“All that is left will be C89”确实表明你只剩下了C语言。但是有些人可能会忽略这一点。 - Csaba Toth
2
“是的,你可以禁用C++11功能,但只能通过禁用所有 C++功能来实现”,这样的措辞可能会避免负评。但我喜欢它现在的样子.... :)” - Tony Delroy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接