Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C:在实现文件中放置静态函数原型是一种好的做法吗?_C_Header Files_Function Prototypes - Fatal编程技术网

C:在实现文件中放置静态函数原型是一种好的做法吗?

C:在实现文件中放置静态函数原型是一种好的做法吗?,c,header-files,function-prototypes,C,Header Files,Function Prototypes,我正在编写一个C程序,并在相应的.h文件中声明每个编译单元外部可见的所有函数。但是,我在每个编译单元中也有一些静态函数。我不希望以特定的方式对静态函数进行排序。我应该在头文件中声明所有静态函数,还是将所有静态声明放在每个实现文件的顶部?如果您需要在更多编译单元中使用这些静态函数,请将它们的声明放在头文件中,头文件包含在所有文件中,您需要这些函数的地方。不要将它们复制粘贴到其他.c文件中(不要重复) 如果有一个只在单个编译单元中使用的函数,那么在同一个.c文件中声明和定义它没有什么错。实际上,它甚

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

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


如果有一个只在单个编译单元中使用的函数,那么在同一个
.c
文件中声明和定义它没有什么错。实际上,它甚至更好,因为您不公开不应该公开的内容。

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

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


希望这有帮助!

谢谢。我也很怀疑,有明确的确认是件好事。