2010-10-02 160 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 

这个防止错误

希望这有助于