gpt4 book ai didi

c - 为什么需要在其中声明函数?

转载 作者:行者123 更新时间:2023-11-30 15:26:23 24 4
gpt4 key购买 nike

代码:

#include <stdio.h>
int navin(); //function declaration
int main()
{
int i = navin(); //function call
}
int navin() //function definition
{
printf("Hello");
}

输出:你好

问题:

如果我们删除函数声明行int navin();从上面的代码来看,它打印的是相同的。那为什么要使用它呢?

最佳答案

这里的函数声明称为前向声明。如果函数在定义之前已被调用[使用],则使用此函数。

在您的代码中,请注意,当在 main() 内部调用 navin() 时,此时该函数尚未定义。通过使用前向声明,您可以告诉编译器,

"This is the function signature. This function definition is present later in the code, continue the compilation."

如果没有此前向声明,大多数 c 编译器将向您显示警告[称为隐式声明],表明它们无法找到函数 navin(),因此,编译器将假设函数原型(prototype)为

  • 任意数量的输入参数
  • 返回整数类型。

在大多数情况下,这最终会导致灾难。

您可以在 this 中找到更多信息相关问题。

深刻的用法:头文件。

<小时/>

注意:

在较旧的 c 标准 c89 中,这应该只是一个警告,但在较新的版本 c99 c11 将此[缺少前向声明]定义为错误。但是,默认情况下 gcc [linux 上的 c 编译器] 不实现这些标准。如果您明确告诉 gcc 遵循 c99 及更高版本,它将产生正确错误消息。

关于c - 为什么需要在其中声明函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27385904/

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