隐藏C头文件中的实现和辅助函数

时间:2014-03-09 17:24:44

标签: c header include modularity

由于我包含的文件只是复制到我包含的文件中,我可以调用头文件实现的任何函数。

根据我的理解,

静态声明无济于事。

如何发布一些头文件并阻止用户的主C文件调用标题中的某些函数?

(当然不是真的隐藏,因为他只能查看来源,但帮助他不要使用不打算直接调用的函数)

1 个答案:

答案 0 :(得分:1)

不要真正隐藏它们(顺便说一句,使你的库free software通常是值得的。你可以使用LGPL许可证....)。但是将这些内部函数放在一个单独的标题中,例如foo-internals.h #include来自公众foo.h,并将这些功能仅作为内部评论!

另外,定义一些命名约定,例如对公共函数使用一些通用foo_前缀,为“私有”函数使用foointernal_

,请使用once-only headers

您可以使用可见性 pragmasfunction attributes(将可见性设置为隐藏),至少在Linux上或使用GCC。

API不仅由头文件定义,还按惯例和文档定义。未记录的函数或注释为内部的函数不应该是API的一部分。

通过研究真实现​​有免费软件库的源代码(例如GTK,Posix libc,如MUSL libcGNU libc等等)来获取灵感。)。