uli*_*tko 3 c++ coding-style function-declaration
所以在这个又一个古老的C++代码库中,我经常发现这种风格:
// ...
void FooBar::Eggs(int spam);
void FooBar::Eggs(int spam) {
// implementation here
// ...
}
Run Code Online (Sandbox Code Playgroud)
一般来说,我确实理解在C++中声明一个函数的重点是什么,但是我找不到任何理由来进行这种复制.有没有理由不消除它?
如果这是一个早于标准C的代码库,则此代码最初可能如下所示:
#ifdef PROTOTYPES
void FooBar_Eggs(int spam);
#endif
FooBar_Eggs(spam)
int spam;
{
...;
}
Run Code Online (Sandbox Code Playgroud)
20世纪90年代的C编译器,即使它们支持原型,也不会从"旧式"函数定义中推导出一个原型,以便在同一个文件中为它下面的代码带来好处,所以你会经常在代码中看到这种构造旨在使用符合标准的编译器和旧版编译器进行编译.
现在想象一下,在当时和现在之间的某个时刻,有人将所有旧式函数定义机械地转换为原型定义,而其他人机械地将C转换为C++,结果看起来很像你所拥有的.
领先声明不再有用,可以安全地删除.