2014-09-03 75 views
3

有没有办法让Eclipse编辑器假定已经包含了特定的C头文件,而不必#明确包括它?使Eclipse CDT预先包含一个头文件,以避免错误:“Symbol <symbol>无法解析”

例如,我们怎样才能实现:

#include "common_type_defs.h" 
#include "special_type_defs.h" // Don't want to have to mention this header file 

main() 
{ 
    common_type var1; 
    special_type var2; 
    ..... 
} 

只写:

#include "common_type_def.h" 

main() 
{ 
    common_type var1; 
    special_type var2; // Eclipse editor: "Symbol 'special_type' could not be resolved" 
    ..... 
} 

没有得到Eclipse编辑器标注错误: “符号 'special_type' 无法解析”。

原因是,该项目使用自定义脚本编译系统。特殊的头文件由构建系统自动添加,从不同的库中选择。所以构建成功。

我已经添加了特殊的头文件夹到项目的包含路径。这允许我击中[F3]并跳转到“special_type”的定义。只是编辑器标记了一个错误。

我不想沉默错误,因为我想抓住真正的错误。

有什么建议吗?

+0

那么,你是怎么最终会做? – einpoklum 2016-11-10 11:22:39

+0

解决方法是使用不同的“构建配置”,并在构建配置中设置不同的包含文件。 – 2016-11-11 10:10:38

+0

...但是,您通过构建配置添加包含文件的位置? – einpoklum 2016-11-11 10:21:19

回答

1

转到:
项目属性C/C++通用预处理器包含路径,宏等GNU C
选择CDT用户设置项比点击添加按钮。选择包含文件并在此输入预处理器预包含文件。

应用并重建索引器。

My pre-included ppdefs.h file

I am using Oxygen.1a Release (4.7.1a)

+0

“CDT用户设置条目”设置将在工作区内的.metadata/.plugins/org.eclipse.cdt.core文件夹中取代.cproject文件。这对版本控制来说是一个挑战。 – noxmetus 2018-01-11 01:11:00

1

不要额外定义你的编译系统,然后:

#ifndef CUSTOMBUILDER 
#include "special_type_defs.h" // Don't want to have to mention this header file 
#endif 
+0

谢谢,但问题是,构建系统不是用C编写的,并且C源代码不能修改。构建系统是一组脚本,用于解析C源代码并根据特定设置添加丢失的内容。所以这个解决方案无法工作。因此选项如下: (1)使用另一个编辑器, (2)静默错误, (3)不知何故说服Eclipse知道这个文件*是*包含的。 因为我喜欢Eclipse,我想知道如何做后者。 – 2014-09-03 13:02:08

+0

我不太明白这个答案。该代码段在哪里去?你的意思是它保留在源文件中? – einpoklum 2016-11-10 11:22:22

0

我结束了创建不同的“生成配置”,对于每一个构建构建系统的选项。在那里,我可以根据需要添加背景头文件。

一个缺点是我必须维护不同的构建配置来镜像构建系统:当新的头文件被添加到构建系统时,相同的文件也必须被添加到eclipse构建配置中。所以这个解决方案将不适合大多数人经常更换包含文件的团队项目,因为您很容易错过文件更改或两个文件。但对于小型团队和不经常的更改而言,这种方式非常有效。