NetBeans 6.7.1,Linux,C中的“无法解析...”

我正在与一个关于NetBeans的C项目的小组合作 .

出于某种原因,即使已包含正确的库,NetBeans也会将“string”,“endl”,“cout”等内容报告为“无法解析” .

该项目按预期编译和运行,因此在一天结束时,这没什么大不了的,只是将所有标记为错误的内容都非常烦人 .

我一直无法找到关于这个bug的任何内容 . 在博客中只是一个模糊的参考 . 还有其他人经历过吗?

显然它没有广泛传播,因此必须有一个设置/配置导致它 . 有谁知道谁阻止这种情况发生?

EDIT:

不,这些“错误”仅在IDE中 . 代码编译好并运行 . 开发人员使用了“using namespace std;”所以应该没有问题 . 似乎NetBeans IDE存在问题 .

示例代码:

#include <stdlib.h>
#include <string>
#include <iostream>

using namespace std;

int main(int argc, char** argv)
{
   string test;
   test = "Why?";

   cout << test << endl;

   return (EXIT_SUCCESS);
}

这段代码编译并打印出“为什么?”但是在IDE中将“string”,“cout”和“endl”标记为错误 . 明确使用std ::没有区别

Clean up Edit:

对于任何感兴趣的人,几天后我有6个可用于NetBeans的更新 . 安装此更新后,问题得到纠正,尽管代码没有变化 . 所以,显然这是一个NetBeans错误 .

回答(4)

3 years ago

嗯..这件事恰巧发生在我身上 . 有一次我开始使用NetBeans,它只是强调了我对openGL(gl,glu和过剩)的所有调用,我无法摆脱错误 . 编译得很好(自上次显示没有错误以来,我没有更改代码中的任何内容)

阅读这篇文章后,我检查了更新,更新,现在它表明没有错误:)这是奇怪的因为我经常更新..

EDIT: nvm,现在再次加下划线:(

3 years ago

试试 std::stringstd::endlstd::cout

要么,

using std::string;
using std::endl;
using std::cout;

在包含库之后,在源文件的开头 . 也许您的IDE将它们标记为错误,但仍然使用标准命名空间 .

你也可以使用

using namespace std;

但这通常是一个坏习惯,因为它会使全局命名空间变得混乱,并且最终会产生歧义(标准命名空间很大) . 就个人而言,我只是将 std:: 放在我的小项目中的所有内容之前,并且在项目中使用 using std::______ 或在大型项目中使用它 .

无论如何,这就是错误听起来的样子,但是(至少根据我的经验),如果这是问题,程序将无法编译 .

根据您的编辑:
如果你得到的错误只来自IDE,也许你有错误的模式或什么?您在示例中发布的代码非常简单C,任何愿意使用C的编译器或IDE都可以处理它没问题 . 如果您描述的错误来自您的编译器,那么这意味着您要么没有写C?

3 years ago

对于任何感兴趣的人,几天后我有6个可用于NetBeans的更新 . 安装此更新后,问题得到纠正,尽管代码没有变化 . 所以,显然这是一个NetBeans错误 .

3 years ago

FWIW我在Ubuntu 10.04上遇到与Netbeans 6.8相同的问题 . 令人沮丧的Netbeans也告诉我,它在帮助 - >检查更新菜单中是最新的(因为这是Ubuntu的当前版本) .

通过synaptic / aptitude删除Netbeans并手动下载和安装最新版本(6.9.1)也为我解决了这个问题 . 我希望商店里没有更多这样的恶作剧......

现在我已经解决了这个问题,并且应用了this性能补丁,我很遗憾,这种体验并不是开箱即用的,我花了相当多的时间在Eclipse CDT和Netbeans上试图让事情运转良好 .