包括头文件

时间:2010-10-02 17:05:54

标签: c header

我有一些关于头文件的问题(我在谈论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")提前谢谢

3 个答案:

答案 0 :(得分:3)

有3种情景

    仅在set.h 中需要
  1. my_ADT.h 仅在set.h
  2. 中需要
  3. my_ADT.c {li} set.hmy_ADT.h
  4. 都需要
  5. my_ADT.c 根本不需要
  6. set.h: - )
  7. 对于方案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

答案 1 :(得分:1)

如果my_ADT.h文件中包含my_ADT.c,则您应仅在set.h中加入my_ADT.h

答案 2 :(得分:0)

对于pmg回答,你必须知道避免#include问题的一个好方法是用一个更加合理的指令来包围所有头文件,检查.h文件是否已经包含在内。

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

这可以防止由多个标头包含引起的错误

希望这会有所帮助