Netbeans中错误的“无法解析标识符”

问题描述 投票:3回答:7

我的程序编译得很好,但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可能很重要。

c++ c++11 netbeans netbeans-8
7个回答
15
投票

我知道这个问题已经有七个月了,但是自从它作为谷歌搜索的第二个结果出现后,我会告诉我想出的答案。对于Netbeans至少。转到项目属性并确保将“C Compiler” - >“C Standard”设置为C11,并将“C ++编译器” - >“C ++ Standard”设置为C ++ 11。你必须设置BOTH或它仍然会给出错误的错误!


2
投票

使用C ++,自动完成,有时甚至语法突出显示总是有问题。使用C ++和C ++ 11进行深入研究的越多,Eclipse和Netbeans就会开始用红色波浪线强调所有内容。我的一些(正确和完美编译)程序是一个巨大的红色波浪线。我建议您完全禁用错误标记并保持自动完成,但在许多情况下它只是不起作用,您必须充分利用它。


1
投票

我有同样的情况。发生这种情况是因为我使用.c文件而不是.cpp


1
投票

这将解决问题:

  1. 右键单击“项目”。
  2. 选择“代码帮助”。
  3. 清理C / C ++缓存。
  4. 重新启动IDE。

0
投票

对于Netbeans 8.2(在Linux上),只有以下内容适用于我:工具 - >选项 - >代码帮助 - >宏定义:更改:__cplusplus=199711L:用于C ++ 14的__cplusplus=201402L或用于C ++ 11的__cplusplus=201103L


0
投票

我做了以上所有但是对我来说诀窍是认识到Makefile有g ++而不是g ++ -std = c ++ 11。


0
投票

要在最新的netbeans 8.2或9版本中解决与c ++ 17相关的“无法解析标识符”,可能需要将宏定义__cplusplus = 201703L设置为默认的C ++ 14标准宏定义,无法解决出现的那些意外错误消息在编辑器中。

© www.soinside.com 2019 - 2024. All rights reserved.