由于我包含的文件只是简单地复制到我包含的文件中,所以我可以调用头文件实现的任何函数。
据我所知,静态声明也无济于事。
如何发布一些头文件并防止用户的主 C 文件调用我的头文件中的某些函数?
(当然不是真的隐藏,因为他只能看源码,而是帮助他不要使用不打算直接调用的函数)
最佳答案
不要真的隐藏它们(顺便说一句,让你的图书馆 free software 通常是值得的。你可以使用 LGPL 许可证....)。但是将这些内部函数放在一个单独的标题中,例如foo-internals.h
是来自公共(public) foo.h
的 #include
并将这些函数注释为仅供内部使用!
此外,定义一些命名约定,例如对公共(public)函数使用一些通用的 foo_
前缀,对“私有(private)”函数使用 foointernal_
。使用 once-only headers需要时。
您可以使用可见性 pragmas和 function attributes (将可见性设置为隐藏),至少在 Linux 或 GCC 上是这样。
安API不仅由头文件定义,而且由约定和文档定义。未记录的函数或注释为内部的函数不应期望成为 API 的一部分。
通过研究真实存在的自由软件库的源代码(例如 GTK 、Posix libc,如 MUSL libc 或 GNU libc 等....)获取灵感。
关于c - 在 C 头文件中隐藏实现和辅助函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22285441/