在函数中拥有函数原型的目的是什么?

What is the purpose of having a function prototype in a function?

本文关键字:函数 是什么 原型 拥有      更新时间:2023-10-16

我承认我没有跟上最新的C/C++版本,但我想知道为什么在函数中拥有函数原型是有效的代码?它与lambda的使用有关吗?

这是示例代码 - 这将在Visual Studio 2019和g ++ 5.4.0上编译/运行

int main()
{
int func(bool test);
return 0;
}

代码块可以包含任意数量的声明。 由于函数原型是一个声明,因此它可能出现在块中。

当然,与在文件范围内声明函数相比,在逻辑上这样做没有多大意义,但它在语法上是正确的。

在该示例中,声明毫无意义。但在更复杂的示例中,它不是:

int main() {
int func(bool test);
func(true);
return 0;
}

该代码等效于更常见的公式:

int func(bool test);
int main() {
int func(bool test);
func(true);
return 0;
}

除了第一个main的作用域内引入名称func;第二个将名称引入全局范围。

当我不想滚动浏览源文件以确定将声明放在哪里时,我偶尔会使用第一种形式;将其放在将要使用的函数中是一个快速而肮脏的解决方案。如果是临时代码(例如添加调试输出(,则可以更轻松地将其全部删除。但是,一般来说,在全球范围内进行声明更容易处理。毕竟,您可能还想从其他地方调用相同的函数,并且拥有全局声明意味着您不必重复它。