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

ysr*_*ung 20 c++ gcc c++14

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

/root/gcc-4.9.2/bin/g++ -std=c++1y testing.cpp
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*att 30

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

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

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


αλε*_*λυτ 6

c++14在您提到的 gcc 4.9.2 的情况下,和之间没有区别c++1y。但对于早期的 gcc 版本,例如 gcc 4.8.1没有c++14选项

g++: error: unrecognized command line option '-std=c++14'
Run Code Online (Sandbox Code Playgroud)

因为标准接受的年份尚不清楚。在这种情况下,使用该-std=c++1y选项是启用即将推出的 c++14 标准的某些部分的唯一解决方案。