2010-10-02 157 views
1

我有一些關於頭文件的問題(我正在談論c,但我認爲它將是相同的C++),讓我們假設我有一些my_ADT.c文件(我已經實現的功能和實際struct),也my_ADT.h裏面我有pointer for my struct Question:如果我使用ADT Set實施my_ADT我需要包括set.h兩個文件my_ADT.h and my_ADT.c或包括只my_ADT.h就足夠了(裏面my_ADT.c我#include "my_ADT.h")在此先感謝包括頭文件

回答

1

如果my_ADT.h包含在my_ADT.c文件,那麼你只能在my_ADT.h中包含set.h

3

有3個場景

  1. set.h僅在my_ADT.h
  2. set.h需要只需要my_ADT.c
  3. set.h需要在這兩個my_ADT.hmy_ADT.c
  4. set.h是沒有必要的:-)

對於方案3)添加#include "set.h"到文件my_ADT.h文件,其實,並#include "my_ADT.h"my_ADT.c(適當包括警衛,你不可能包括set.h也向C文件)沒什麼。

對於方案2)包括set.h僅在my_ADT.c

對於方案1)包括set.h僅在my_ADT.h

0

在癮PMG回答您必須知道避免的#include問題的一個好辦法就是圍繞所有包含預編譯程序指令的頭文件都會檢查.h文件是否已包含在內。引起多發性頭包含

#ifndef __my_ADT_header 
#define __my_ADT_header 
/* 
* your header declaration here 
*/ 
#endif 

這個防止錯誤

希望這有助於