5

我正在与一个小组合作开发 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:: 没有区别

清理编辑:

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

4

4 回答 4

1

嗯..同样的事情也发生在我身上。有一次我启动 NetBeans 时,它只是强调了我对 openGL 的所有调用(gl、glu 和 glut),但我无法摆脱这些错误。它编译得很好(自上次没有显示错误以来,我没有更改代码中的任何内容)

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

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

于 2009-11-15T07:46:03.963 回答
0

试试std::string, std::endl,std::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?

于 2009-09-19T08:22:03.300 回答
0

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

于 2010-02-16T18:11:44.633 回答
0

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

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

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

于 2010-12-05T17:38:38.083 回答