我的程序编译得很好,但Netbeans告诉我“无法解析标识符to_string”。
我尝试了“Netbeans 7.2 shows "Unable to resolve identifier" , although build is successful”中的所有内容,并在代码帮助选项中将“C ++标准”设置为“C ++ 11”。
到目前为止,这是解决此问题的唯一功能。然而它也是我使用的第一个C ++ 11特性,这使我相信它与Netbeans有关,而不是理解我正在使用C ++ 11,尽管我在代码辅助菜单中明确指定了它。
最小的例子:
#include <string>
int main() {
std::to_string(1);
}
编辑:使用nullptr
时出现同样的问题
编辑2:我突然意识到提到我不使用生成的Makefile,但是SCons可能很重要。
我知道这个问题已经有七个月了,但是自从它作为谷歌搜索的第二个结果出现后,我会告诉我想出的答案。对于Netbeans至少。转到项目属性并确保将“C Compiler” - >“C Standard”设置为C11,并将“C ++编译器” - >“C ++ Standard”设置为C ++ 11。你必须设置BOTH或它仍然会给出错误的错误!
使用C ++,自动完成,有时甚至语法突出显示总是有问题。使用C ++和C ++ 11进行深入研究的越多,Eclipse和Netbeans就会开始用红色波浪线强调所有内容。我的一些(正确和完美编译)程序是一个巨大的红色波浪线。我建议您完全禁用错误标记并保持自动完成,但在许多情况下它只是不起作用,您必须充分利用它。
我有同样的情况。发生这种情况是因为我使用.c文件而不是.cpp
这将解决问题:
对于Netbeans 8.2(在Linux上),只有以下内容适用于我:工具 - >选项 - >代码帮助 - >宏定义:更改:__cplusplus=199711L
:用于C ++ 14的__cplusplus=201402L
或用于C ++ 11的__cplusplus=201103L
我做了以上所有但是对我来说诀窍是认识到Makefile有g ++而不是g ++ -std = c ++ 11。
要在最新的netbeans 8.2或9版本中解决与c ++ 17相关的“无法解析标识符”,可能需要将宏定义__cplusplus = 201703L设置为默认的C ++ 14标准宏定义,无法解决出现的那些意外错误消息在编辑器中。