-std = c ++ 0x和-std = c ++ 11之间的区别是什么?

时间:2014-07-05 17:58:11

标签: c++ eclipse c++11

我知道这些标志适用于Eclipse中的C ++ 11。

但我不知道有什么区别,哪一个更受欢迎。

他们似乎都正常使用C ++ 11。

2 个答案:

答案 0 :(得分:17)

您应该更喜欢-std=c++11

(注意:我认为-std=c++11x是你问题中的拼写错误)

只有不支持-std=c++0x的较旧编译器版本才需要旧的-std=c++11,并且他们选择该名称来表示当时即将发布的功能(和ABI)的初步和不稳定性质{ {1}}(当还不清楚是否最终会成为C++11C++10时)。在C ++ 11标准正式发布之前,它们改变了一些适应标准不断变化的工作草案的细节。

如果您的编译器支持C++12,则没有理由使用-std=c++11。关于兼容性:甚至可能存在差异和不兼容性,但这些不仅仅限于使用-std=c++0x,而是绑定到编译器的特定版本。当编译器支持两者时,它们应该是相同的。

答案 1 :(得分:2)

C ++和C标准通常以它们发布的年份命名,这样可以更容易记住。

例如,在C ++中,最初的标准版于1998年发布,所以我们讨论C ++ 98,当我们参考2003年发布的第一次修正时,我们讨论C ++ 03。

有人声称下一个标准将在2008年完成,但由于它不确定,它被称为C ++ 0x,其中x代表8或9.在实践中,我们都知道,规划发生了变化,因此我们最终得到了C ++ 11。

不过,对于下一个版本(C ++ 1x),Bjarne Stroustrup表示他打算在5年内完成这项工作(2016年左右)。目前,核心语言(概念,模块和垃圾收集)都有所改变,重点似乎更多的是扩展库(例如文件系统),但它还处于早期阶段,所以谁知道呢! / p>