如果您使用C编写代码并将编译器配置为坚持在使用它们之前声明所有函数(或者如果您使用C++编写代码),那么您最终可以使用(至少)两个组织中的一个来处理源文件.
或者:
头
在此文件中转发(静态)函数的声明
外部功能(主要入口点)
静态 - 非公共 - 功能
要么:
头
静态 - 非公共 - 功能
外部功能(主要入口点)
我认识到在C++中,术语"静态"不是首选,但我主要是C程序员,并且C++中存在等效概念,即文件中的匿名命名空间中的函数.
您使用哪个组织,为什么更喜欢它?
作为参考,我自己的代码使用第二种格式,以便在使用静态函数之前定义静态函数,这样就不需要声明它们并定义它们,从而节省了有关函数接口的信息写出两次 - 反过来,当内部接口需要改变时,它会减少(略微)开销.这样做的缺点是文件中定义的第一个函数是最低级别的例程 - 由文件后面定义的函数调用的例程 - 所以不是在顶部有最重要的代码,它更接近底部的文件.对你有多重要?
我假设所有外部可访问的函数都在头文件中声明,并且这种重复形式是必要的 - 我认为这不应该引起争议.
我一直使用方法#1,原因是我希望能够快速判断特定文件中定义了哪些函数,并在一个地方看到它们的签名.我没有找到必须更改原型以及函数定义特别有说服力的论点,因为你通常最终会改变调用已更改函数的所有代码,在你处理时更改函数原型似乎相对微不足道.