我将详细介绍一个常见的假设问题。
问题:
我提供了一个静态库libX.a
以及头文件a.h
和b.h
。头文件 a.h
和 b.h
包含库导出的 API。 a.h
包含 a1.h
,b.h
包含 b1.h
。但是 a1.h
和 b1.h
不是由库的所有者提供的,因为 a1.h
和 b1.h
包含库私有(private)使用的数据结构,所有者不想公开这些数据结构。
我必须编写一个应用程序来调用库导出的 API。因此,我必须包含 a.h
和 b.h
,其中包含 API 的声明。
好的,好的。我编写应用程序并包含头文件 a.h
和 b.h
并调用 API。但是我会收到编译器错误,因为编译器找不到 a.h
和 内部包含的
.a1.h
和 b1.h
>b.h
问题:
这个问题有解决办法吗?如果是,请认真寻求解决方案:)
库所有者是否有必要公开他在库中内部使用的所有私有(private)头文件?
最佳答案
我将从最后一个开始。库的所有者可以隐藏包含私有(private)信息的 header ,但他必须确保公共(public) header 不依赖于那些私有(private)信息,即它们不能包含它们!
对于第一个问题,您可以尝试删除那些包含行。它应该可以编译,但如果不能编译,则创建者可能在私有(private) header 中隐藏了一些重要的内容,这些内容对于除他之外的其他人使用他的库至关重要。
关于c++ - 如何处理库未提供的头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11177989/