2014-10-08 88 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" 

這使分離的接口,它允許你單獨推理的獨立接口,減少了錯誤,並能大大減少編譯時間。