我有一些关于头文件的问题(我说的是c,但我认为对于c++也是一样的),让我们假设我有一些my_ADT.c文件(在里面我有函数的实现和实际的代码),还有my_ADT.h在里面我有pointer for my struct Question:如果我使用ADT Set来实现代码,我是否需要在两个文件中都包含代码代码或者只包含< set.h >D9my_ADT.h and my_ADT.c >就足够了(在my_ADT.c中我有<代码>D10my_ADT >)提前谢谢
发布于 2010-10-03 01:11:27
如果my_ADT.h包含在my_ADT.c文件中,那么您应该只在my_ADT.h中包含set.h。
发布于 2010-10-03 01:40:40
有3种场景
set.h只在my_ADT.hset.h中需要,在my_ADT.cset.h中才需要,在my_ADT.h和my_ADT.cset.h中都需要:-)对于场景3)将#include "set.h"添加到文件my_ADT.h中,将事实添加到文档中,并将#include "my_ADT.h"添加到my_ADT.c中(使用适当的包含保护,将set.h也包含到C文件中不会有任何损失)。
对于场景2)仅在my_ADT.c中包含set.h
对于场景1)仅在my_ADT.h中包含set.h
发布于 2010-10-04 08:59:13
除了pmg回答之外,你必须知道避免#include问题的一个好方法是用一个预编译器指令包围所有的头文件,检查.h文件是否已经被包含。
#ifndef __my_ADT_header
#define __my_ADT_header
/*
* your header declaration here
*/
#endif这可以防止包含多个报头而导致错误
希望这能有所帮助
https://stackoverflow.com/questions/3846703
复制相似问题