2013-11-28 339 views
0

如何解决这种依赖关系?解决Makefile依赖关系

在我的项目中,每个文件都包含具有相同名称的头文件。

头文件包含另一个头文件(依赖关系)。

而且毕竟我有这个依赖关系:

parser.h -> lexer.h -> str.h 
parser.h -> tables.h -> bst.h -> str.h 

所以,当我不包括str.hbst.h,我有“未知类型名称”的错误。

当我包括str.h我有'类型重定义'错误。

据我所知,这可以通过Makefile中的正确依赖来解决。

在此之前,我是最简单的Makefile(对象列表,一个命令)。

另外,什么是解决循环依赖最简单的方法?

instructions.h -> bst.h 
bst.h -> instructions.h 

所以我需要说明的原型数据的数据类型,但还需要一个指针指示在bst.h用于GOTO指令。

我在C99中编写,在Makefile中尝试了很多依赖性变体,但没有结果。

在此先感谢。

+3

这不是一个Makefile的问题,你只需要*包含头文件警卫*。 –

回答

3

扩大对奥利的评论,在str.h:

#ifndef __STR_H__ 
#define __STR_H__ 

/* str.h contents here */ 

#endif 
+0

并确保在不同的文件中使用不同的名称('__BST_H__'等)。 – creichen

+0

@creichen和Oli:非常感谢!这是非常有用的方法。对项目的所有文件进行更改,一切正常。 –