gpt4 book ai didi

c++ - 在定义之前立即声明函数的原因?

转载 作者:太空狗 更新时间:2023-10-29 20:43:02 29 4
gpt4 key购买 nike

所以在另一个古老的巨大 C++ 代码库中,我经常发现这种风格:

// ...

void FooBar::Eggs(int spam);
void FooBar::Eggs(int spam) {
// implementation here
// ...
}

总的来说,我确实理解 forward declaring 的意义所在C++中的一个函数,但是我找不到这种重复的任何理由。有什么理由消除它吗?

最佳答案

如果这是一个早于标准 C 的代码库,那么这段代码最初可能看起来像这样:

#ifdef PROTOTYPES
void FooBar_Eggs(int spam);
#endif
FooBar_Eggs(spam)
int spam;
{
...;
}

1990 年代的 C 编译器,即使它们支持原型(prototype),也不会从“旧式”函数定义中推导出原型(prototype),以便在同一文件中使用它下面的代码,因此您会经常看到这种在旨在使用符合标准的编译器和旧版编译器进行编译的代码中构建。

现在想象一下,从那时到现在,有人机械地将所有旧式函数定义转换为原型(prototype)定义,而其他人机械地将 C 转换为 C++,结果可能与您所拥有的很相似。

前导声明不再有任何作用,可以安全地删除。

关于c++ - 在定义之前立即声明函数的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16775294/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com