由于我包含的文件只是复制到我包含的文件中,我可以调用头文件实现的任何函数。
根据我的理解,静态声明无济于事。
如何发布一些头文件并阻止用户的主C文件调用标题中的某些函数?
(当然不是真的隐藏,因为他只能查看来源,但帮助他不要使用不打算直接调用的函数)
答案 0 :(得分:1)
不要真正隐藏它们(顺便说一句,使你的库free software通常是值得的。你可以使用LGPL许可证....)。但是将这些内部函数放在一个单独的标题中,例如foo-internals.h
#include
来自公众foo.h
,并将这些功能仅作为内部评论!
另外,定义一些命名约定,例如对公共函数使用一些通用foo_
前缀,为“私有”函数使用foointernal_
。
您可以使用可见性 pragmas和function attributes(将可见性设置为隐藏),至少在Linux上或使用GCC。
API不仅由头文件定义,还按惯例和文档定义。未记录的函数或注释为内部的函数不应该是API的一部分。
通过研究真实现有免费软件库的源代码(例如GTK,Posix libc,如MUSL libc或GNU libc等等)来获取灵感。)。