2014-10-08 63 views
0

两个文件头之间的正确方式,我想这是一个非常愚蠢的问题,但我面对我的C程序中一个小问题:什么是包括用C

假设我有在file1.c和file2 .C

我使用在file1.c中和file2.ca结构在file2.c中 宣布我还使用内部file2.c中file1.c中的功能

因此,我所做的是我把#include "file1.h" in file2.h and #include "file2.h" in file1.h ... 但编译时我有一个无限循环。

我该如何解决这个问题?谢谢

+0

将头文件和函数放在一个头文件中,nd'#include'将它包含在'file1.c'和'file2.c'中 – Haris 2014-10-08 18:00:31

回答

1

您需要在file1.hfile2.h中都使用包含保护。类似于

#ifndef FILE1_H_ 
#define FILE1_H_ 

/* ... 
* code 
*/ 

#endif /* FILE1_H_ */ 
1

@downhillFromHere所述,包括警卫在内,是一个答案。所有的头文件都应该包含防护,除非你有其他很好的理由。

但是,您的描述没有说明为什么您需要file1.h以包含file2.h,反之亦然。头文件描述了一个接口。如果接口是依赖的,那么你应该考虑将它们组合成一个头文件:file.h。如果file1.hfile2.h中描述的接口是独立的,那么它们不应包含对方。公开独立接口的正确方法是让file1.cfile2.c包含两个标头。

在这两个file1.cfile2.c

#include "file1.h" 
#include "file2.h" 

这使分离的接口,它允许你单独推理的独立接口,减少了错误,并能大大减少编译时间。