Eclipse 3.7无法在C++编辑器中解析类型
Eclipse 3.7 cannot resolve Types in C++ Editor
我最近从Eclipse 3.6更改为Eclipse 3.7,用于Ubuntu 11.04中的C++开发。
对于3.6版,我没有遇到什么大麻烦,只是索引器总是有一些问题。现在,在版本3.7中,它开始将未解析的类型标记为错误。由于索引器似乎更不喜欢我,我的Eclipse显然不知道uint16_t
或size_t
这样的类型。
与代码编辑器中显示的错误相反,我的编译器在编译代码和解析所有符号和类型方面没有问题,所以这似乎是IDE本身的问题。
有没有办法避免这种行为,因为所有的红色下划线使我的代码越来越不可读。。。?
更新:
好吧,通过一些研究和Dennis的回答,我发现我需要添加一些路径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
对于CCD_ 8。
现在几乎所有的错误都消失了。唯一仍然困扰我的函数是来自标头stdio.h
的printf
。我查了一下,头文件本身就在包含的路径中。我仍然得到一个错误,上面写着Function printf could not be resolved
。我想再次指出,这些只是Eclipse显示的错误——编译本身运行良好。
因此,这实际上提出了3个问题:
-
在项目属性中,
Paths and Symbols
部分与C++ Build/Settings/C++ Includes
部分之外的include Paths一致。这意味着在其中一个部分中添加/删除路径会直接影响其他部分的输入。既然C++ Includes
与编译器直接一致,我想知道为什么编译器可以正确编译(并找到头),即使它们没有作为路径传递给他?GCC是否使用了某种我不知道的标准路径? -
为什么他没有在eclipse中找到
printf
?包括头文件stdio.h
,它还包含printf
的声明——那么为什么Eclipse代码编辑器告诉我它不能解决它呢? -
为什么头文件划分得如此之多?我知道,如果我正在为另一个traget(例如PowerPC)构建,我需要其他头文件——但为什么GNU GCC将这些头文件分离在不同的目录中?
常见类型的红色下划线通常是由于包含路径中没有标准库造成的。查看您的项目包含的内容。。。它们在项目属性中。确保您的C++包含有一个与您正在使用的编译器的C++标准libs文件夹相匹配的条目。
在遇到这个问题,并且搜索显示两个堆栈溢出问题遇到了同一个问题后,我想我会提交我是如何解决的,因为它让我非常恼火,以至于我可以进行实际调查。
我正在运行Fedora,令人恼火的是,它在/usr/include/linux中有一个stddef.h文件。。。。它实际上是空的。因此,尽管我在include路径中有编译器的stddef.h,但索引器实际上是在解析另一个空文件。所以需要做的是:
用编译器特定的include路径(在我的例子中是/usr/lib/gcc/x86_64-redhat-linux/4.7.2/include/)作为路径和符号列表的前缀,以避免解析其他空的stddef.h。
我使用带有ARM编译器(ARM-none eabi,4.4.1)的Eclipse(Mars.1 Release 4.5.1,Build id:20150924-1200)。我遇到了和你完全一样的问题。我以前的路是:
D:testCodeSourcerySourcery G++ Litelibgccarm-none-eabi4.4.1include
然后我在编译器目录中发现了另一个include目录(后缀:"fixed"):
D:testCodeSourcerySourcery G++ Litelibgccarm-none-eabi4.4.1include-fixed
这修复了我关于类型错误检测的所有错误(例如uint16_t)。
- 如何在c++迭代器类型中包装std::chrono
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- 参数包中的筛选器类型
- 定义模板参数的迭代器类型
- "未定义对'WinMain@16'的引用"gcc 编辑器中的错误
- C++如何乘以包含 std::variant 元素的向量的迭代器?正在执行迭代器类型的转换?
- 如何从C++而不是虚幻编辑器中添加静态网格体组件的值?
- UE4 - Visual Studio在我从编辑器添加新的c ++文件后无法打开任何源文件 - UBT_COMPILED
- C++不兼容的迭代器类型
- 图标编辑器中的自定义颜色 (VS 2015)
- 如何推导 std::高级迭代器类型?
- 在 stl 容器包装器中定义迭代器类型
- Qt的QFontMetrics::horizontalAdvance()缺少代码编辑器实现
- 如何在文本编辑器中处理 [-Wc++11-extensions]
- Spirit.X3 与 lambda 返回不同的解析器类型
- Objective-C C++ 包装器 类型错误的不完整定义
- Eclipse 3.7无法在C++编辑器中解析类型
- 哪些 IDE 和文本编辑器可以推断出在 C++11 中使用 auto 关键字声明的变量类型
- 自定义构件上的 float 类型的Q_PROPERTY不会显示在属性编辑器中
- 当使用Android NDK时,Eclipse编辑器将无法识别c++模板类型