我总是会在我的头文件中包含依赖项,以便在将该头添加到源文件时,我不需要挖掘其他所需的头以使其编译。
但是,在审查了其他一些编码标准后,似乎经常会禁止这样做,并要求头文件不包含任何#include语句。
我真的找不到任何关于此的讨论 - 那么禁止这种做法的原因是什么,还是纯粹取决于偏好?
-
E.g。 typedef.h包含U8的typedef。 my_header.h声明void display_message(U8 arg);
对typedef.h的引用应该进入my_source_file.c还是进入my_header.h?
答案 0 :(得分:5)
我认为不允许标头包含其先决条件的理由不充分。
考虑从源文件中删除#include
。例如,假设代码已被修改为不再使用foo.h
,因此正在删除#include
。但源文件有十几个#include
语句。您应该删除哪些其他内容,因为不再需要它们?希望foo.h
记录其先决条件,以便您可以识别要删除的候选项。但是,如果删除其#include
语句,则可能正在删除其他头文件所需的先决条件。因此,您必须检查每个头文件的先决条件。
相反,如果标题包含其先决条件,那么您只需删除#include <foo.h>
即可完成。
答案 1 :(得分:-1)
它应该放在源文件中。标题应该只在源代码文件中声明函数和变量(通常是标准)。