我最近从 Eclipse 3.6 更改为 Eclipse 3.7 ,我在 Ubuntu 11.04 中用于 C++ 开发。
使用 3.6 版时,我没有遇到什么大麻烦,只是索引器总是有一些问题。现在在 3.7 版中,它开始将未解决的类型标记为错误。由于索引器似乎更不喜欢我,我的 Eclipse 显然不知道类似uint16_t
or的类型size_t
。
与代码编辑器中显示的错误相反,我的编译器在编译代码和解析所有符号和类型方面没有问题,所以这似乎是 IDE 本身的问题。
有什么方法可以避免这种行为,因为所有的红色下划线使我的代码越来越不可读......?
更新:
好的,通过一些研究和丹尼斯的回答,我发现我需要添加一些路径
Project Properties/ C/C++ General/ Paths and Symbols
因为我正在为 PowerPC 而不是 I32 目标构建,所以我不能只添加/usr/include
. 相反,我需要添加
/usr/powerpc-linux-gnu/libc/usr/include
对于所有标准标题(如stdint.h
)。我还需要:
/usr/lib/gcc/powerpc-linux-gnu/4.5.1/include
对于stdarg.h
.
现在几乎所有的错误都消失了。唯一仍然困扰我的功能是printf
来自 header stdio.h
。我查了一下,头文件本身位于包含的路径中。我仍然收到一个错误,上面写着Function printf could not be resolved
。我想再次指出,这些只是 Eclipse 显示的错误 - 编译本身工作正常。
所以这实际上引发了3个问题:
在项目属性中,该
Paths and Symbols
部分与该部分的包含路径相一致C++ Build/Settings/C++ Includes
。这意味着在其中一个部分中添加/删除路径会直接影响其他部分的条目。由于C++ Includes
直接与编译器相一致,我想知道为什么编译器可以正确编译(并找到标头),即使它们没有作为路径传递给他?是否有某种我不知道的 GCC 使用的标准路径?为什么他
printf
在日食中找不到?包含头文件stdio.h
,它还包含声明printf
- 那么为什么 Eclipse 代码编辑器告诉我它无法解析呢?为什么头文件分得这么多?我知道如果我正在为另一个 traget(例如 PowerPC)构建我需要其他头文件 - 但是为什么 GNU GCC 将这些头文件分隔在不同的目录中?