我刚安装Eclipse
CDT
与MinGW
。 所有的环境变量设置,包括等尝试运行一个hello世界,一切似乎都很好。Eclipse CDT“符号NULL无法解析”
我试图加载C
项目,我在电脑前了,似乎加载样样精,但我得到与NULL
符号以下错误:
Symbol 'NULL' could not be resolved
任何见解?谢谢!
我刚安装Eclipse
CDT
与MinGW
。 所有的环境变量设置,包括等尝试运行一个hello世界,一切似乎都很好。Eclipse CDT“符号NULL无法解析”
我试图加载C
项目,我在电脑前了,似乎加载样样精,但我得到与NULL
符号以下错误:
Symbol 'NULL' could not be resolved
任何见解?谢谢!
NULL通常在stddef.h中定义。该文件通常也包含在stdlib.h和stdio.h中。
而且,你总是可以做到这一点:
#ifndef NULL
#define NULL ((void *) 0)
#endif
我在这里寻找答案这一点,因为我发现CDT有时会失败,解决标准库的头。我仍然不知道为什么以及如何重现错误。只需重新启动CDT,全部解决。
我有同样的问题:我的生成文件运行良好,但我从Eclipse CDT视图中得到类似你的错误。
我关闭了当前的项目,我打开了一个新的“使用现有代码的Makefile项目”,指定了我的项目的正确位置源位置。在此之后,我检查了: 右键项目/ C++ general /路径和符号/ Gnu C++/include目录不是空的,并且包含我的项目的正确路径。
然后,我重建了索引(右键/索引/重建)。
此外,我使用Eclipse CDT 7而不是Eclipse CDT 8,因为CDT8有时会给我编译GUI的错误,但无法解决,尽管makefile很好。
+1一直在寻找这个解决方案。 – chux
正如鲍勃提到的,我修正错误只是重建索引
我是有这个同样的错误,我通过右键单击您的项目来解决它,将鼠标悬停在索引选项卡上,然后单击重建。之后我的错误就消失了。
stddef.h
定义NULL,但stddef.h
是xxx/include/linux
不xxx/include
- 即使你已经添加的MingW的xxx/include
,仍然无法找到NULL
添加您的MingW的include/linux
路径到项目
(1)我的XScale交叉编译的include/linux
路径的例子:/opt/crosscompile/xscale/gcc-4.6.0-glibc-2.9/arm-xscale-linux-gnueabi/sysroot/usr/include/linux
(2 )我的帖子:Ubuntu Eclipse: Symbol ‘NULL’ could not be resolved
我只是修复了这样的错误,并认为没有人发现这个解决方案,我会发布它。我发现stdlib在我的AVR GCC编译器中声明了NULL作为___need_NULL。这在Eclipse IDE中导致了一个错误。然而,这个错误是由Coden Analysis引起的,没有发现异常,因此无法找到符号。您可以在“常规 - >启动/关闭”下的“首选项”中关闭Coden或更改其在C/C++代码分析中的行为。
这也许可以解释有时随机性其他人也遇到
我认为你还没有加入定义NULL头文件。添加stdlib.h(#include语句)。它定义了NULL宏。
只需将C:\MinWG\lib
添加到Eclipse的库路径中即可。
我也遇到类似的问题,就是“符号精灵魔法无法解析”,并且已经包含了精灵头文件。我认为这个问题可能是由库缓存引起的,因为重新启动软件可以解决问题。感谢他人的帮助。
你有没有遇到类似的问题? – Alex
是的,我的问题是“符号”精灵魔术“无法解决” – user6528152
欢迎来到SO。有关发布答案的一些提示。发布答案如果:1。你遇到了类似的问题,并能够解决它。 2.你认为你的答案可以起作用(例如,你的解决方案是不同的,或者问题稍有不同,但与原始问题有关)。在你的答案中包含更多细节。 – Alex
其实我不认为标准标题包含对方;定义“NULL”的几个头中的每一个都是独立的。你可以自己定义它,但没有理由这样做。只需包含标题即可。 –
@Keith - 也许在某些系统上,但在Linux上,stdlib.h包含stddef.h。这里是一个谷歌代码搜索的例子 - [http://google.com/codesearch#XAzRy8oK4zA/libc/include/stdlib.h&q=stdlib.h&type=cs] –
好吧,但效果就好像它不包括它。这个: '#include int main(void){ offsetof(struct {int i;},i); return 0; }' 无法编译。 –