2012-02-15 18 views
8

目前我在Windows环境中使用C++。我正在使用Visual Studio 2008与Service Pack 1.我正在使用哪个版本的C++?

我从来没有想过C++版本,除非我知道了C++11。似乎有不同的版本,如ANSI标准,C++ 98标准等。

  1. 我该如何了解我正在使用哪个版本的C++?

  2. 如果我没有Visual Studio,我知道我可以使用其他编译器如TC来编译我的C++代码。在那种情况下,我怎么才能知道编译器正在使用哪个版本的C++。

  3. 更改是在连续的C++版本中进行的关于编程概念还是仅在语言设计中进行的?

+4

没有C++ 0x了;它只是C++ 11。 – 2012-02-15 03:31:12

+3

您正在使用C++ 03(或VS08支持的任何部分)。您必须查看每个编译器的文档以查看它们各自支持的C++版本;实际上,许多人只会支持某个版本的“大部分功能”,而不是完全符合标准。 – 2012-02-15 03:34:41

+1

@SethCarnegie:公平地说,归功于'export'的移除,GCC有了一个很好的变化,Clang将达到完全的C++ 11一致性(当然,减去错误)。微软可能永远不会实现两阶段查找,所以无论他们实现了多少C++ 11功能,他们都不会达到一致性。 – 2012-02-15 03:41:21

回答

8

这不像版本检查那么简单。

每个支持一些C++ 11的编译器都支持一个不同的子集C++ 11。由于显而易见的原因,没有编译器宣布完全符合C++ 11。

C++ 11规范要求定义一个预定义宏__cplusplus,其值为201103L。不过,你不能单靠这个宏。不是以真实的代码。

您必须依赖编译器特定的宏来告诉编译器以及您正在使用的编译器的版本。或者您可以使用Boost.Config来帮助您检测是否支持特定功能。

+1

在Visual Studio中有计划的C++ 11和C++ 14功能的路线图:https://blogs.msdn。COM/B/somasegar /存档/ 2013/06/28/CPP-波及roadmap.aspx?重定向=真 – Chris 2013-08-19 05:07:30

1

Visual Studio 2008?你可以忘记C++ 11。 Visual Studio 2010有一些C++ 11,但它很麻烦。 对于某些功能,Visual Studio 2012有更好的C++ 11,但其他功能缺失。 Visual Studio 2013对variadic模板和其他功能提供了新的支持。 但是VS支持其他编译器,如C++ 11中的gcc。 您可以为所有这些版本下载免费的快速版本。

相关问题