创建库

时间:2016-06-10 10:09:13

标签: c++ c avr

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

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

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