我刚刚安装了Eclipse
CDT
和MinGW
。所有环境变量都已设置,包括头文件等。尝试运行hello world程序,似乎一切正常。
我试图加载之前在电脑上的一个C
项目,它似乎可以正常加载所有东西,但是我得到了以下关于NULL
符号的错误:
Symbol 'NULL' could not be resolved
有什么见解吗?谢谢!
我刚刚安装了Eclipse
CDT
和MinGW
。所有环境变量都已设置,包括头文件等。尝试运行hello world程序,似乎一切正常。
我试图加载之前在电脑上的一个C
项目,它似乎可以正常加载所有东西,但是我得到了以下关于NULL
符号的错误:
Symbol 'NULL' could not be resolved
有什么见解吗?谢谢!
NULL通常在stddef.h中定义。这个文件通常也随着stdlib.h和stdio.h一起包含。
另外,你可以这样做:
#ifndef NULL
#define NULL ((void *) 0)
#endif
正如Bob所提到的,我仅通过重新构建索引来修复了该错误。
NULL
被定义在stddef.h
中,但是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:符号“NULL”无法解析
这可能解释了其他人经历的随机性。
我认为您没有添加定义NULL的头文件。请添加stdlib.h(#include声明),它会定义NULL宏。
这个问题在2019年仍然存在……有许多不同的原因/解决方案。
我在编辑器中使用NULL和stdio.h(stderr、printf等)时出现了未解析的符号,但编译工作正常。直到我进入项目属性并删除了一堆不必要的C/C++包含路径之后,没有任何帮助。之后重新索引修复了问题。
在另一种情况下,我对一个涉及某些条件预处理器宏技巧的类名出现了未定义的符号。将定义宏的头文件添加到C/C++索引器选项中的“索引所有特定头文件的变体”中(在检查“启用项目特定设置”之后)修复了该问题。
这表明eclipse CDT索引器很容易混淆。
在Linux上将${COMMAND}
设置为gcc
在“预处理器包含路径、宏等”和“CDT GCC内置编译器设置”下,如果您从现有的Makefile项目导入源代码,则会出现未定义的${COMMAND}
变量。
Eclipse尝试运行该命令以解析其stdout以查找头文件,但默认情况下未设置${COMMAND}
,因此无法执行此操作。
我已在{{link1:“Eclipse CDT用于C标准库头文件的未解决的包含”错误}}中详细说明了这一点。
C:\MinWG\lib
添加到Eclipse的库路径即可。
#include <stdlib.h> int main(void) { offsetof(struct { int i; }, i); return 0; }
编译失败。 - Keith Thompson