2009-11-21 56 views
0

我正在开发一个共享库的一部分,因为代码是大,我决定把它在很多头文件和源文件分割,像任何正常的程序:)。做一个C LIB“私人”

的问题是,大多数这些头的供内部使用,即我不想让他们从我的媒体库的外部访问。所以我正在考虑将它们全部移到一个大的源文件中,并且只提供可见的头文件。

这样做是个好主意吗?我应该担心可见度吗?

感谢

回答

10

而是合并头,只是让他们沿着你的源文件,也不要“发布”他们作为开发包的一部分。作为一个例子,linux内核在源码树中有很多头文件,但只有某些头文件暴露给应用程序(在include结构中)。

+0

我明白了。这是一个很好的观点,我应该认为它是笑话。 TY – scooterman 2009-11-21 22:02:34

+0

您打赌......这并不总是一个明显的方法来在内部使用标题,但它确实是一个合理的方法。当然,你不能让你的“公共”标题依赖于内部标题... – jheddings 2009-11-21 22:05:38

0

是的,你应该担心符号的可见性。在Windows上,设置为使用DLLEXPORT。在Linux上,定义DLLEXPORT以设置默认符号可见性,但是使用-fvisibility = hidden编译所有内容。有一个Ulrich Drepper文章很有用。

包含文件,你可以将它们分为目录和/或你可以使用你的包装系统,把刚才复制的公共文件。

2

你应该从“清洁”角度来处理它;请勿发送包含您不打算拨打电话的功能的标题。不要记录您没有发送标题的功能。

如果有人真的想调用一个函数库中的,他们可以,但你应该尽量说清楚,这是一个不支持的情况下使用,它是他们的问题,如果这一切都错了。