兩個文件頭之間的正確方式,我想這是一個非常愚蠢的問題,但我面對我的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 ... 但編譯時我有一個無限循環。
我該如何解決這個問題?謝謝
兩個文件頭之間的正確方式,我想這是一個非常愚蠢的問題,但我面對我的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 ... 但編譯時我有一個無限循環。
我該如何解決這個問題?謝謝
您需要在file1.h
和file2.h
中都使用包含保護。類似於
#ifndef FILE1_H_
#define FILE1_H_
/* ...
* code
*/
#endif /* FILE1_H_ */
如@downhillFromHere所述,包括警衛在內,是一個答案。所有的頭文件都應該包含防護,除非你有其他很好的理由。
但是,您的描述沒有說明爲什麼您需要file1.h
以包含file2.h
,反之亦然。頭文件描述了一個接口。如果接口是依賴的,那麼你應該考慮將它們組合成一個頭文件:file.h
。如果file1.h
和file2.h
中描述的接口是獨立的,那麼它們不應包含對方。公開獨立接口的正確方法是讓file1.c
和file2.c
包含兩個標頭。
在這兩個file1.c
和file2.c
:
#include "file1.h"
#include "file2.h"
這使分離的接口,它允許你單獨推理的獨立接口,減少了錯誤,並能大大減少編譯時間。
將頭文件和函數放在一個頭文件中,nd'#include'將它包含在'file1.c'和'file2.c'中 – Haris 2014-10-08 18:00:31