【发布时间】:2015-08-16 17:09:11
【问题描述】:
我正在使用 Eclipse Luna 和 g++ 4.7.2(由devtoolset-2 提供)运行 CentOS 6.6 x64。我正在使用 Eclipse 内置的自动生成文件。
我已经使用 scl enable devtoolset-2 bash 启用了 g++ 4.7.2
[me@dev ~]# g++ --version g++ (GCC) 4.7.2 20121015 (红帽 4.7.2-5) 版权所有 (C) 2012 Free Software Foundation, Inc. 这是免费软件;请参阅复制条件的来源。没有 保修单;甚至不考虑适销性或特定用途的适用性。
不幸的是,在编译时,Eclipse 会抛出错误,说“-std=c++11”不是一个有效的选项。我在项目属性>> C/C++ 构建>>设置>>方言>>“其他方言标志”下设置了方言,值为“-std=c++11”。
调用:GCC C++ Compiler make: *** Waiting for unfinished jobs.... g++ -std=c++11 .... cc1plus:错误:无法识别的命令行选项 "-std=c++11"
我尝试使用带有“-std=c++0x”的“语言标准”选项,但编译时会抛出错误
map<int, MyObject*> myObjectMap;
// assume I've added in objects before the loop
for (const auto& kv : myObjectMap) // line 249
{
// do things
}
249: 错误:':' 标记之前的预期初始化程序
【问题讨论】:
-
嗯,gcc 4.6 中引入了 range-for,所以这应该适用于
-std=c++0x。可以发SSCCE吗? -
获取更新版本的 GCC。 c++11 在 4.7.x IIRC 版本中是实验性的。
-std=c++0x选项应该可以启用这些实验性功能。 -
GCC 4.7 应该理解命令行选项
-std=c++11和包括基于范围的for循环的代码。您是否从启用了 devtoolset 的 shell 启动了 Eclipse? -
你可以直接从命令行尝试构建吗?
-
@thaspius 啊。
devtoolset安装了一个新的开发环境并行到现有的环境。默认仍然是旧的,新的只有在你改变环境时才会激活。 Eclipse 需要知道使用哪一个。顺便说一句:如果可能,请考虑使用devtoolset-2.1,因为这也是 RHEL7(和 Centos 等价物)正在使用的。
标签: c++ eclipse c++11 eclipse-cdt devtoolset