目前我在Windows环境下使用C++。 我正在使用带有 Service pack 1 的 Visual Studio 2008。
我从来没有考虑过 C++ 版本,除非我知道了
C++11
。似乎有不同的版本,如 ANSI 标准、C++ 98 标准等。
我如何知道我使用的是哪个版本的 C++?
如果我没有 Visual Studio,我知道我可以使用其他编译器(例如 TC)来编译我的 C++ 代码。在这种情况下,我如何才能知道编译器正在使用哪个版本的 C++。
连续的 C++ 版本中的更改是关于编程概念还是仅在语言设计中?
这并不像版本检查那么简单。
支持某些 C++11 的每个编译器都支持 C++11 的不同子集。出于显而易见的原因,目前还没有编译器宣称完全符合 C++11。
C++11 规范要求定义一个预定义宏
__cplusplus
,其值为 201103L
。但是,您不能单独依赖这个宏。不是真实的代码。
您必须依赖特定于编译器的宏来判断编译器的时间以及您正在使用的编译器的版本。或者您可以使用 Boost.Config 来帮助您检测是否支持特定功能。
Visual Studio 2008?你可以忘记 C++11。 Visual Studio 2010 有一些 C++11,但它有错误。 Visual Studio 2012 在某些功能方面拥有更好的 C++11,但其他功能却缺失。 Visual Studio 2013 新增了对可变参数模板和其他功能的支持。 但 VS 在 C++11 支持方面落后于 gcc 等其他编译器。 您可以下载所有这些版本的免费快速版本。