我知道这些标志适用于Eclipse中的C ++ 11。
但我不知道有什么区别,哪一个更受欢迎。
他们似乎都正常使用C ++ 11。
答案 0 :(得分:17)
您应该更喜欢-std=c++11
。
(注意:我认为-std=c++11x
是你问题中的拼写错误)
只有不支持-std=c++0x
的较旧编译器版本才需要旧的-std=c++11
,并且他们选择该名称来表示当时即将发布的功能(和ABI)的初步和不稳定性质{ {1}}(当还不清楚是否最终会成为C++11
或C++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>