gpt4 book ai didi

c - 为什么在 C 中不强制声明具有 int 返回类型的函数?

转载 作者:太空宇宙 更新时间:2023-11-04 05:51:50 25 4
gpt4 key购买 nike

int main ()
{
hello();

return 0;
}

int hello()
{

printf("\n hello world");

return 0;
}

根据 C 规则,定义在 main() 下方的每个函数都必须在 main() 上方声明,但为什么它是具有 int 的函数的异常(exception) 作为返回类型?如果您将 hello() 的返回类型更改为其他类型(void、char * 等)它会抛出声明错误。为什么 int 返回类型没有错误或警告?

最佳答案

这是 C 的一个旧特性,现在正式不支持了。

在早期(C99 之前,如果我没记错的话),如果函数缺少返回类型,或者函数缺少前向声明,则函数是假设返回一个int并接受任意数量的参数。您对该函数的实际定义也符合该假设,因此链接器也不会提示。

您的编译器仍然支持该旧功能(主要是为了保持对使用旧标准编写的程序的向后兼容性),因此您可以成功编译和链接该程序。

仅供引用,在最新的 C 标准 C11 中,官方提到了它

  • remove implicit function declaration

因此,根据严格检查,必须前向声明一个函数(或者,在使用前定义,这样编译器就不必承担任何事情)。

关于c - 为什么在 C 中不强制声明具有 int 返回类型的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39416299/

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