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