我正在运行Eclipse Helios,我安装了g ++ - 4.6。希望g ++ 4.6实现C ++ 11功能并不错。我创建了一个使用nullptr和auto关键字的C ++项目。构建会出现以下错误: -
../{filename}.cpp:13:13: error: ‘nullptr’ was not declared in this scope
../{filename}.cpp:14:2: warning: ‘auto’ will change meaning in C++0x; please remove it [-Wc++0x-compat]
实际上直到昨天才建好。我今天无处可去。请帮我解决这个问题。
答案 0 :(得分:51)
要启用C ++ 0x支持,请将命令行参数-std = c ++ 0x添加到g ++命令行。或者,要在C ++ 0x扩展之外启用GNU扩展,请将-std = gnu ++ 0x添加到g ++命令行。 GCC 4.7及更高版本支持-std = c ++ 11和-std = gnu ++ 11。
您是否使用-std=gnu++0x
编译?
答案 1 :(得分:21)
终于找到了该怎么做。在Project Properties - >下添加了-std = c ++ 0x编译器参数。 C / C ++ Build - >设置 - > GCC C ++编译器 - >杂。它现在有效!
但是如何为所有C ++项目默认添加此标志?任何人
答案 2 :(得分:4)
这是实际的编译器错误还是代码分析错误?有时代码分析可能有点粗略,并报告无效错误。
要关闭项目的代码分析,请在Project Explorer中右键单击项目,单击Properties,然后转到C / C ++ General选项卡,再转到Code Analysis。然后单击“使用项目设置”并禁用您不希望的那些。
另外,您确定要使用C ++ 11编译器进行编译吗?
答案 3 :(得分:3)
您正在使用g ++ 4.6版本,您必须调用标志-std = c ++ 0x来编译
g ++ -std = c ++ 0x * .cpp -o output
答案 4 :(得分:3)
转到设置 - >编译器... 并添加标志“让g ++遵循即将到来的C ++ 0x ISO C ++语言标准[std = c ++ 0x]
答案 5 :(得分:0)
我在项目属性 - >下的“-c -fmessage-length = 0”之后添加“,-std = c ++ 0x”。 C / C ++ Build - >设置 - > GCC C ++编译器 - >杂。别忘了添加逗号“,”作为分隔符。
答案 6 :(得分:0)
尝试使用不同版本的gcc为我工作 - 在我的情况下为gcc 4.9。