gcc编译选项之间的区别std = c ++ 1y和std = c ++ 14

时间:2015-03-03 06:01:25

标签: c++ gcc c++14

我安装了gcc 4.9.2。我使用以下命令编译了程序:

/root/gcc-4.9.2/bin/g++ -std=c++1y testing.cpp

请注意,除了选项-std=c++1y之外,还有另一个选项-std=c++14。编译器是否会以相同的方式工作,并为两个选项生成完全相同的可执行文件?

2 个答案:

答案 0 :(得分:27)

C++ 14是最新的ISO标准,除非您需要某些gcc非标准功能,否则应该使用它。

c++1y是一个在完成之前用于引用c ++ 14标准的名称,因此很可能遵循标准草案,而不是实际标准本身。两者之间可能存在微小差异,但c++14是ISO标准。

简而言之,请使用c++14

答案 1 :(得分:3)

对于您提到的gcc 4.9.2,c++14c++1y之间没有区别。但对于较早的gcc版本,例如gcc 4.8.1中有no c++14 option

g++: error: unrecognized command line option '-std=c++14'

因为尚不知道标准验收的年份。在这种情况下,使用-std=c++1y选项是only solution来启用即将到来的c ++ 14标准的某些部分。