当我们为dll创建一个头文件时,或者某些library.It mite有特定于平台的code.So通常是根据平台(Linux、Mac、Windows)分发的头文件。
boost库或wxwidget库的头文件如何?
发布于 2015-12-17 10:55:55
在创建库时,当所有平台的头文件相同时,通常情况下最好。然而,对于大多数实际的库来说,存在一些系统依赖关系,这些依赖关系要求不同。库的用户最好从一开始就将其与任何差异隔离开来,将平台细节封装到实现中可能是合理的,例如,使用私有实现成语。
当系统依赖项蔓延到接口中时,报头中的声明可能会发生变化。例如,访问网络基础设施的方式依赖于系统,所涉及的类型和功能调用在不同的平台上有所不同。如果数据结构直接嵌入到用户可见类中(例如,提高性能),或者从标头调用函数,例如,因为它们是从函数模板调用的,则可能存在差异。
我倾向于处理标题中的差异,使用条件编译,并保持相同的头和接口。在大多数情况下,我试图将条件编译的使用进一步集中到每个不同实体的一个位置,以尽可能避免条件编译:当需要另一种配置时,我希望更新尽可能少的位置。
发布于 2015-12-17 10:20:14
理想情况下,头文件中接口的实现应该是不同的,因为每个平台(Linux、Mac、.In )都是标准实现,头文件应该是相同的。使用编译标志分隔不同平台的代码。这是理想的情况,然而,一些糟糕的库甚至可能有不同的标题。
https://stackoverflow.com/questions/34331910
复制相似问题