我打算在其他项目中使用一些实用程序代码,但我怀疑它是否是一个主要是标题的代码,一个带有标题的静态库只是暴露界面或介于两者之间。大多数代码都是包含其他标准函数的简单函数,但也会有更大的函数。
我想我大多理解标题方法和静态库方法之间的区别:
标题:
对于静态库:
我一直在看一些代码而且我已经看过两种方法,但我不知道哪种方法会更好。有什么想法吗?
答案 0 :(得分:1)
通常可以编写标题,以便宏可用于有条件地包含整个库(用于在一个单元中编译)或仅声明(用于链接静态/共享对象或编译)单独的单位)由用户选择。使用这样的宏具有额外的好处,假设存在单独的库源和/或对象,则可以将选择推迟到编译之前并由构建工具控制。这样做的一个明显的缺点是它可以使你的代码完全混乱,以及使用宏进行条件编译所带来的所有复杂性和认知压力。
是否任何给定选项(header / header + source / static-lib / shared-lib / etc。)是合适的,或者上述选项是否有用,或者是否可能,取决于你正在做什么。
答案 1 :(得分:1)
我更喜欢把它写成静态库,而不是使用标题。
答案 2 :(得分:0)
除非这些函数是一行或两行,否则我认为将实现与声明分开(使用静态库)会更好。
如果每次更改文件时都需要重新编译相同的稳定代码,那么就是在浪费时间。
内联函数除非您经常使用它们,否则不会提供大量的速度提升。此外,编译器是否可以自行决定内联声明的内联函数。
答案 3 :(得分:0)
我通常的方法是单独在头文件中加入签名和文档(简要解释每个函数的功能),并将代码编译成静态(或共享)库。
通过这种方式,您可以将预编译的库和标题一起发布,这样可以为客户(甚至是将来的健忘者)提供一种检查函数功能的简便方法,而无需跳过实现。 / p>
这将是我的建议。但是,C语言并没有强加这种行为,这完全取决于程序员。