C:将静态函数原型放在实现文件中是一种好习惯吗?

时间:2013-10-07 18:48:38

标签: c header-files function-prototypes

我正在编写一个C程序,并在相应的.h文件中声明每个编译单元外可见的所有函数。但是,我在每个编译单元中也有一些静态函数。我宁愿不必以特定方式订购静态函数。我应该在头文件中声明所有静态函数,还是只将所有静态声明放在每个实现文件的顶部?

2 个答案:

答案 0 :(得分:7)

头文件应该是一种“菜单”,告诉其他源文件模块导出哪些函数,类型等。只要有可能,您不应泄漏有关头文件中内部实现的任何信息,因为它会使代码更难修改(如果您的标头的客户端尝试使用您稍后删除的函数)并且更难使用(因为读者必须筛选私有函数原型以找到实际导出的函数。)

因此,最好将原型为一个源文件专用的函数放在该源文件的顶部,而不是放在相应的头文件中。

希望这有帮助!

答案 1 :(得分:2)

如果您需要更多编译单元中的这些静态函数,请将其声明放入头文件中,该文件包含在您需要此功能的所有文件中。不要将它们复制粘贴到其他.c文件中(不要重复自己)。

如果有一个仅在单个编译单元中使用的函数,则在同一.c文件中声明和定义它没有任何问题。实际上它甚至更好,因为你没有暴露出不应该暴露的东西。