creating libraries

creating libraries

本文关键字:libraries creating      更新时间:2023-10-16

我正在练习avr,我有一个问题,在创建库时,最好制作一个包含函数声明的头文件和一个包含代码(函数定义)的c文件,或者只做一个包含声明和函数定义的头文件

这两个选项适用于不同的情况:

  • 如果要用C++编写模板库,则仅标头选项很好,因为库没有链接时组件。这就是标准C++库(以前称为STL)的很大一部分的分发方式。
  • 如果要编写 C 样式库或C++类库,则不能选择仅标头。您必须将标头与实现分开,将实现编译为可链接库,并分发随附的标头。否则,在多个翻译单元中包含具有定义的相同标头将导致由于重复定义而导致链接时间错误。

头文件仅包含作为定义声明的原型,包括变量和函数。它可以包含在许多其他文件中。

函数定义是定义实现的地方,它应该只有一个。

如果将函数定义放在头文件中,并且它包含在多个 C 文件中,则在编译器阶段会出现多个定义错误,特别是在将多个对象(包括该函数定义)链接到一个最终对象期间。

有一种

情况是内联函数必须放在头文件中,因为它在编译器阶段扩展,并嵌入到调用方函数中,因此编译器必须通过包含该头文件来了解编译器期间的实现。