【发布时间】:2023-03-17 12:45:01
【问题描述】:
我有一些使用 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 特定的语法位吗? (在我看来它不像,但所有这些代码都是作为示例给出的,所以应该按照编译器提供的那样工作。)
有什么帮助吗?
【问题讨论】:
-
您需要 GCC >= 4.7 才能获得
c++11标志。 4.4 太旧了,即使使用-std=c++0x,您也不会获得基于范围的 AFAIK。请至少阅读编译器的手册页,其中列出了它支持的选项。
标签: c++ gcc compiler-construction c++11 g++