C头文件依赖项

时间:2013-08-07 16:43:28

标签: c include header-files

我总是会在我的头文件中包含依赖项,以便在将该头添加到源文件时,我不需要挖掘其他所需的头以使其编译。

但是,在审查了其他一些编码标准后,似乎经常会禁止这样做,并要求头文件不包含任何#include语句。

我真的找不到任何关于此的讨论 - 那么禁止这种做法的原因是什么,还是纯粹取决于偏好?

-

E.g。 typedef.h包含U8的typedef。 my_header.h声明void display_message(U8 arg);

对typedef.h的引用应该进入my_source_file.c还是进入my_header.h?

2 个答案:

答案 0 :(得分:5)

我认为不允许标头包含其先决条件的理由不充分。

考虑从源文件中删除#include。例如,假设代码已被修改为不再使用foo.h,因此正在删除#include。但源文件有十几个#include语句。您应该删除哪些其他内容,因为不再需要它们?希望foo.h记录其先决条件,以便您可以识别要删除的候选项。但是,如果删除其#include语句,则可能正在删除其他头文件所需的先决条件。因此,您必须检查每个头文件的先决条件。

相反,如果标题包含其先决条件,那么您只需删除#include <foo.h>即可完成。

答案 1 :(得分:-1)

它应该放在源文件中。标题应该只在源代码文件中声明函数和变量(通常是标准)。