我正在与一个关于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 回答
嗯..这件事恰巧发生在我身上 . 有一次我开始使用NetBeans,它只是强调了我对openGL(gl,glu和过剩)的所有调用,我无法摆脱错误 . 编译得很好(自上次显示没有错误以来,我没有更改代码中的任何内容)
阅读这篇文章后,我检查了更新,更新,现在它表明没有错误:)这是奇怪的因为我经常更新..
EDIT: nvm,现在再次加下划线:(
试试
std::string
,std::endl
,std::cout
等要么,
在包含库之后,在源文件的开头 . 也许您的IDE将它们标记为错误,但仍然使用标准命名空间 .
你也可以使用
但这通常是一个坏习惯,因为它会使全局命名空间变得混乱,并且最终会产生歧义(标准命名空间很大) . 就个人而言,我只是将
std::
放在我的小项目中的所有内容之前,并且在项目中使用using std::______
或在大型项目中使用它 .无论如何,这就是错误听起来的样子,但是(至少根据我的经验),如果这是问题,程序将无法编译 .
根据您的编辑:
如果你得到的错误只来自IDE,也许你有错误的模式或什么?您在示例中发布的代码非常简单C,任何愿意使用C的编译器或IDE都可以处理它没问题 . 如果您描述的错误来自您的编译器,那么这意味着您要么没有写C?
对于任何感兴趣的人,几天后我有6个可用于NetBeans的更新 . 安装此更新后,问题得到纠正,尽管代码没有变化 . 所以,显然这是一个NetBeans错误 .
FWIW我在Ubuntu 10.04上遇到与Netbeans 6.8相同的问题 . 令人沮丧的Netbeans也告诉我,它在帮助 - >检查更新菜单中是最新的(因为这是Ubuntu的当前版本) .
通过synaptic / aptitude删除Netbeans并手动下载和安装最新版本(6.9.1)也为我解决了这个问题 . 我希望商店里没有更多这样的恶作剧......
现在我已经解决了这个问题,并且应用了this性能补丁,我很遗憾,这种体验并不是开箱即用的,我花了相当多的时间在Eclipse CDT和Netbeans上试图让事情运转良好 .