应该在C头文件中放置什么声明?

时间:2018-05-29 21:18:42

标签: c header-files

我的项目中几乎每个.c文件都有一个头文件。所有typedef和函数声明都放在头文件中。但这是一个好习惯吗?某些typedef仅用于其中一个.c文件。另外一些函数不会被其他源文件中的函数调用。

1 个答案:

答案 0 :(得分:2)

#include是一个预处理步骤,所以你可以坚持下去。这在很大程度上是一个样式问题,但最好的方法是尽量减少对命名空间的影响。 (通常)使用头文件允许在 public private 之间进行原始区分,并将公共定义放入标头中。这样,单独的编译单元可以包含标题,并在链接它们时解析定义。除非 public 声明将其作为依赖项,否则不应包含任何私有到编译单元的内容。一些有用(或必要)放入头文件的东西,

    public 函数中使用的
  • typedef(例如,用作非static函数的参数的指向函数的指针,也是标题的一部分);
  • enum public 函数中使用的值,或者是.h文件用途的一部分;
  • structunion声明,特别是如果它们属于公共职能部门。如果所有函数都使用指针值,则不需要定义它们(数据隐藏是好的设计,请参阅What is the difference between a definition and a declaration?);
  • 应谨慎使用头文件中的
  • #define以避免名称空间冲突,但有时它是标题目的的一部分;
  • 任何私有符号应为static,因此有资格获得额外优化;任何static都不应该在那里,main不需要原型,(参见Declare main prototype);
  • extern请参阅C: What is the use of 'extern' in header files?

c文件通常应#includeh个文件。头文件也有一些其他用途;例如,请参阅https://en.wikipedia.org/wiki/X_Macro