我有一些使用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特定的语法位吗? (它看起来不像我,但所有这些代码都是作为一个例子给出的,所以应该像编译器一样工作。
任何帮助?
答案 0 :(得分:9)
-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。