fin*_*nnw 5 c coding-style header-files
我在编程生涯中曾经使用过很多C项目,头文件结构通常属于以下两种模式之一:
.h文件的每个.c文件,包含仅模块中定义的功能的原型.选项2的优点对我来说显而易见 - 它使得在多个项目之间共享模块更便宜,并使模块之间的依赖关系更容易看到.
但是选项1的优点是什么?它必须具有一些优势,否则就不会那么受欢迎.
这个问题适用于C++和C,但我从未在C++项目中看到#1.
#defines,structs等的放置也各不相同,但对于这个问题,我想关注函数原型.
我认为#1的主要动机是......懒惰.人们认为管理依赖关系要么太难了,将事物拆分成单独的文件可能会更加明显,并且/或者认为某种程度上"过度杀戮"是为了拥有单独的文件.
当然,它也常常是"历史原因"的情况,其中程序或项目从小的东西发展而来,没有人花时间重构头文件.
选项 1 允许将所有定义放在一处,这样您只需包含/搜索一个文件,而不必包含/搜索多个文件。如果您的系统作为库交付给第三方,则这种优势更加明显——他们不太关心您的库结构,他们只想能够使用它。