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

时间:2009-09-19 06:56:53

标签: c++ linux netbeans netbeans6.7

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

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

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

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

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

修改

不,这些“错误”仅在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 ::没有区别

清理修改:

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

4 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

尝试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编译器编译C ++代码 - 也许netbeans认为您正在编写C?

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

现在我已经解决了这个问题并应用了this性能补丁,我已经设置了一个非常好的IDE,可以快速完成代码。很遗憾,这种体验并不是开箱即用的,我花了相当多的时间在Eclipse CDT和Netbeans上试图让事情顺利进行。