目前我在Windows环境中使用C ++。我正在使用带有Service Pack 1的Visual Studio 2008。
除非我了解C++11
,否则我从未想过C ++版本。似乎有不同的版本,如ANSI标准,C ++ 98标准等。
如何知道我使用的是哪个版本的C ++?
如果我没有Visual Studio,我知道我可以使用其他编译器(如TC)来编译我的C ++代码。在这种情况下,我如何才能知道编译器正在使用哪个版本的C ++。
是否在连续的C ++版本中对编程概念或仅在语言设计中进行了更改?
答案 0 :(得分:9)
它不像版本检查那么简单。
每个支持某些C ++ 11的编译器都支持C ++ 11的不同的子集。由于显而易见的原因,没有编译器宣传完全符合C ++ 11。
C ++ 11规范要求定义一个具有值__cplusplus
的预定义宏201103L
。但是,不能单独依赖此宏。不是真正的代码。
您必须依赖编译器特定的宏来判断编译器和您正在使用的编译器的版本。或者,您可以使用Boost.Config来帮助您检测是否支持特定功能。
答案 1 :(得分:1)
Visual Studio 2008?你可以忘记C ++ 11。 Visual Studio 2010有一些C ++ 11,但它有问题。 对于某些功能,Visual Studio 2012具有更好的C ++ 11,但缺少其他功能。 Visual Studio 2013对可变参数模板和其他功能提供了新的支持。 但VS支持其他编译器,例如gcc,支持C ++ 11。 您可以下载所有这些版本的免费快速版本。