creating libraries
creating libraries
我正在练习avr,我有一个问题,在创建库时,最好制作一个包含函数声明的头文件和一个包含代码(函数定义)的c文件,或者只做一个包含声明和函数定义的头文件
这两个选项适用于不同的情况:
- 如果要用C++编写模板库,则仅标头选项很好,因为库没有链接时组件。这就是标准C++库(以前称为STL)的很大一部分的分发方式。
- 如果要编写 C 样式库或C++类库,则不能选择仅标头。您必须将标头与实现分开,将实现编译为可链接库,并分发随附的标头。否则,在多个翻译单元中包含具有定义的相同标头将导致由于重复定义而导致链接时间错误。
头文件仅包含作为定义声明的原型,包括变量和函数。它可以包含在许多其他文件中。
函数定义是定义实现的地方,它应该只有一个。
如果将函数定义放在头文件中,并且它包含在多个 C 文件中,则在编译器阶段会出现多个定义错误,特别是在将多个对象(包括该函数定义)链接到一个最终对象期间。
有一种情况是内联函数必须放在头文件中,因为它在编译器阶段扩展,并嵌入到调用方函数中,因此编译器必须通过包含该头文件来了解编译器期间的实现。
相关文章:
- C++ MFC Libraries in Travis CI
- Ardunio Uart class & Libraries
- 在 R 中调用"multi file C++ code with external libraries referenced"
- 链接 boost 库时"Error while loading shared libraries"引发的,除了我无法使用 root 访问权限来修复它
- Creating QGenericArgument
- CMake nested libraries
- 如何处理"Cmake Error: Unable to find the requested Boost libraries"?
- Creating C++ API Library
- Bjarne Stroustrup在他的FAQ中"foundation libraries"是什么意思?
- Connflicting C++ libraries
- Windows Boost 1.64 VS2017 missing Python libraries
- 单元测试环境中的"java.lang.UnsatisfiedLinkError: *.so: Can't find dependent libraries"
- dlmopen and C++ libraries
- Linking libraries CMake
- "Error creating variant or safe array" in TClientDataSet.LoadFromStream() in Delphi
- 如何创建可供src/code和lib/libraries访问的全局对象
- "directory containing symbolic versions of my app's shared libraries"的位置(ndk-stack)
- creating libraries
- Qt: Creating a QDoubleSlider
- Using ArrayFire libraries