-std = c ++ 11标志在G 4.4.6中无法识别

时间:2013-05-09 07:28:28

标签: c++ gcc compiler-construction c++11 g++

我有一些使用C ++ 11标准编写的代码,而我们的g ++版本是4.4.6,所以据我所知,应该支持c ++ 11(从4.3开始)。

但是在尝试使用标志“-std = c ++ 11 -std = gnu ++ 11”进行编译时,我会重复错误

cc1plus: error: unrecognized command line option "-std=c++11"
cc1plus: error: unrecognized command line option "-std=gnu++11"

使用-std = c ++ 0x进行编译会产生错误,例如

DeviceInfo.cpp:22: error: expected initializer before ‘:’ token

对应这行代码:

for (cl::Platform& plat : platforms)

这是一个c ++ 11特定的语法位吗? (它看起来不像我,但所有这些代码都是作为一个例子给出的,所以应该像编译器一样工作。

任何帮助?

3 个答案:

答案 0 :(得分:9)

更高版本的GCC支持

-std=c++11设置。通过-std=c++0x设置启用了对新生C ++ 11的初始支持。这可能是你应该尝试的。

是的,您尝试使用的for语法主要是C ++ 11语法。

答案 1 :(得分:3)

似乎4.6和更新版本支持基于范围的for循环。

This page显示了GCC对C ++ 11功能的支持。

答案 2 :(得分:0)

for (cl::Platform& plat : platforms)
是的,这是c ++ 11的具体用法。 GCC 4.7或更高版本同时支持带有-std = c ++ 11选项的c ++ 11。