Netbeans 中的错误 "Unable to resolve identifier"

Erroneous "Unable to resolve identifier" in Netbeans

我的程序编译正常,但 Netbeans 告诉我 "Unable to resolve identifier to_string."

我尝试了“Netbeans 7.2 shows "Unable to resolve identifier" , although build is successful”中的所有内容,并在代码帮助选项中将 "C++ standard" 设置为 "C++11"。

这是迄今为止唯一出现此问题的函数。然而,这也是我使用的第一个 C++11 功能,这让我相信它与 Netbeans 不了解我正在使用 C++11 有关,尽管我在代码帮助菜单中明确指定了它。

最小示例:

#include <string>
int main() {
    std::to_string(1);
}

编辑:同样的问题出现在使用nullptr

的地方

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

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

我知道这个问题已有七个月了,但由于它是 google 搜索的第二个结果,所以我会告诉您我想出的答案。至少对于 Netbeans。转到您的项目属性并确保将 "C Compiler"->"C Standard" 设置为 C11,并将 "C++ compiler"->"C++ Standard" 设置为 C++11。你必须同时设置两者,否则它仍然会给出错误的错误!

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

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

我做了上面所有的事情,但对我来说有用的是认识到 Makefile 有 g++ 而不是 g++ -std=c++11。

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

这将解决问题:

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