每个源文件的标头

Ori*_*ski 11 c header

我试图了解每个源文件方法一个标头背后的目的.正如我所看到的,标题用于typedef在使用它们的几个文件之间共享函数声明,宏和宏.当您为.c文件创建头文件时,它的缺点是每次要查看函数声明或宏时都需要引用头文件,通常一切都在一个源文件(不是整个文件)中更简单软件,当然).

那么为什么程序员会使用这种方法呢?

Dav*_*ley 7

C中的头文件单独声明(必须可用于每个使用函数的.c文件)来自定义(必须在一个地方).此外,它们提供了一点模块性,因为您只能将公共接口放入头文件中,而不能提及应该在.c文件内部的函数和静态变量.它使用文件系统来提供公共接口和私有实现.

一个.h文件到一个.c文件的做法大多是方便的.这样,您就知道声明在.h文件中,以及相应的.c文件中的定义.

  • 是.这个想法是每个标题包含一组彼此相关的声明.在大多数情况下,它适合每个.c文件具有相应的.h,但您可以添加额外的.h文件(例如,定义全局常量或枚举).最终,您负责使用标头来组织代码. (2认同)

Jas*_*ams 7

逻辑,结构化组织和小型源文件支持:

  • 更快,更好的编程 - 将代码分解为更易于管理和可理解的块,可以更轻松地查找,理解和编辑相关代码.
  • 代码可重用性 - 代码的不同"模块"可以分成源/头文件组,您可以更轻松地集成到不同的程序中.
  • 更好的"封装" - 只有特定包含该标头的.c文件才能使用其中的功能,这有助于您最小化代码不同部分之间的关​​系,这有助于模块化.它不会阻止您从任何地方使用东西,但它可以帮助您思考特定c文件为什么需要访问特定标头中声明的函数.
  • 帮助团队合作 - 两个程序员试图同时更改相同的代码文件通常会导致问题(例如排他锁)或额外工作(例如代码合并)相互减慢.
  • 更快的编译 - 如果你有一个标题,那么每次你做一个更改,你必须重新编译一切.对于许多小标题,只有#include更改的标题的.c文件必须重建.
  • 更容易维护和重构 - 出于上述所有原因

特别是,"每个源文件的一个标题"使得查找与您正在使用的c文件相关的声明变得非常容易.只要您开始将多个标头合并到一个文件中,就会开始变得难以关联c和h文件,最终使构建大型应用程序变得更加困难.如果你只是在一个小应用程序上工作,那么养成使用可扩展方法的习惯仍然是个好主意.


Nor*_*sey 5

程序员使用这种方法是因为它允许他们将接口与实现分开,同时保证客户端代码和实现就函数的声明达成一致。.h 文件是关于每个函数原型的“事实真相”(请参阅​​不要重复自己)。

(客户端代码是#include.h 文件中的代码,用于使用导出的函数,但不实现 .h 中的任何函数。)