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

Posted

技术标签:

【中文标题】Netbeans 中的错误“无法解析标识符”【英文标题】:Erroneous "Unable to resolve identifier" in Netbeans 【发布时间】:2015-08-21 13:39:14 【问题描述】:

我的程序编译正常,但 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时也会出现同样的问题

EDIT2:我突然意识到提到我不使用生成的 Makefile 而是 SCons 可能很重要。

【问题讨论】:

我会通过使用较新的语言关键字(例如 int* testCpp11 = nullptr)来确保这是与 c++11 相关的问题,然后看看您是否仍然遇到问题。 @shuttle87 nullptr 也标有“无法解析标识符” 【参考方案1】:

自动完成,有时甚至语法高亮在 C++ 中总是出错。您对 C++ 和 C++11 的深入了解越多,Eclipse 和 Netbeans 就越会开始用红色波浪线在所有内容下划线。我的一些(正确且完美编译的)程序是一条巨大的红色波浪线。我建议您完全禁用错误标记并保留自动完成功能,但在许多情况下它不起作用,您必须充分利用它。

【讨论】:

禁用不起作用的功能并不是一个解决方案吗?使用一个充满有用功能的IDE最终禁用有什么意义,您应该建议使用文本编辑器而不是一个 IDE。 我同意这不是一个解决方案。但这是一个答案,因为现实是:Netbeans IDE 无法处理所有这些复杂的抽象。如果这不是您想要的,与 Netbeans 不同的 IDE/应用​​程序会更适合。 (虽然我真的不知道更好的)【参考方案2】:

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

【讨论】:

刚刚再次遇到 nullptr 的问题,尝试了您的解决方案,现在它给出了正确的突出显示,所以这似乎是正确的答案。 不知道你是怎么找到这个的,但你让我免于发疯 :) @Oebele 这解决了我的问题。我在 Netbeans 中有两个(!)不同的项目。在一个中,我分别拥有 C++ 编译器和 C++11 和 C11 的 C 编译器。在另一个项目中,我将它们都设置为默认值。但后来我遇到了这个问题(使用默认编译器)。当我为第一个项目更改编译器时,它立即解决了我的问题。谢谢。 这个问题在 Linux 和 Windows 的 8.2 中仍然存在,即使默认(在工具下)设置正确。必须为每个项目设置这有点烦人,但它似乎甚至可以使用 c14(未尝试 c17)。 是的。 NB 10 还是一样。在我找到这个线程之前浪费了几个小时。【参考方案3】:

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

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

我完成了上述所有操作,但对我来说诀窍是认识到 Makefile 具有 g++ 而不是 g++ -std=c++11。

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

这样就可以解决问题了:

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

【讨论】:

这对我有用!我尝试将 C 和 C++ 的编译器设置为 v11,但即使重新启动 Netbeans 也无法正常工作。但是清除缓存效果很好!

以上是关于Netbeans 中的错误“无法解析标识符”的主要内容,如果未能解决你的问题,请参考以下文章

Java项目中的Netbeans构建错误

流行错误-apache netbeans 11.2中的org.sqlite.JDBC [重复]

从现有 cmake 应用程序导入的 Netbeans 项目无法在 Windows 上构建并出现文件系统错误

Netbeans IDE (12.2):PHP 8.0 构造函数提升的语法错误

如何将 java web 中的 JDBC 连接到 XAMPP (localhost) (NETBEANS)?

NetBeans 中的“无主键”错误