我正在编写一个C程序,并在相应的.h文件中声明每个编译单元外可见的所有函数。但是,我在每个编译单元中也有一些静态函数。我宁愿不必以特定方式订购静态函数。我应该在头文件中声明所有静态函数,还是只将所有静态声明放在每个实现文件的顶部?
答案 0 :(得分:7)
头文件应该是一种“菜单”,告诉其他源文件模块导出哪些函数,类型等。只要有可能,您不应泄漏有关头文件中内部实现的任何信息,因为它会使代码更难修改(如果您的标头的客户端尝试使用您稍后删除的函数)并且更难使用(因为读者必须筛选私有函数原型以找到实际导出的函数。)
因此,最好将原型为一个源文件专用的函数放在该源文件的顶部,而不是放在相应的头文件中。
希望这有帮助!
答案 1 :(得分:2)
如果您需要更多编译单元中的这些静态函数,请将其声明放入头文件中,该文件包含在您需要此功能的所有文件中。不要将它们复制粘贴到其他.c
文件中(不要重复自己)。
如果有一个仅在单个编译单元中使用的函数,则在同一.c
文件中声明和定义它没有任何问题。实际上它甚至更好,因为你没有暴露出不应该暴露的东西。