9

我有一些使用 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 特定的语法吗?(对我来说它看起来不像,但所有这些代码都是作为示例给出的,所以应该按照编译器提供的那样工作。)

有什么帮助吗?

4

3 回答 3

13

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

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

于 2013-05-09T07:32:34.013 回答
3

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

此页面显示 GCC 对 C++11 功能的支持。

于 2013-05-09T07:38:09.300 回答
1
for (cl::Platform& plat : platforms)

是的,它是 C++11 的特定用法。-std=c++11GCC 4.7 或更高版本同时支持带有选项的 C++11 。

于 2013-05-09T07:32:40.480 回答