gpt4 book ai didi

c - C 中的隐式函数声明

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

术语“函数的隐式声明”是什么意思?调用标准库函数而不包含适当的头文件会产生警告,如下所示:

int main(){
printf("How is this not an error?");
return 0;
}

不应该在没有声明错误的情况下使用函数吗?请详细解释一下。我搜索了这个网站并发现了类似的问题,但找不到明确的答案。大多数答案都提到了包含头文件以消除警告,但我想知道这为什么不是错误。

最佳答案

应该将其视为错误。但C是一门古老的语言,所以这只是一个警告。
编译-Werror (GCC)修复了这个问题。

当 C 找不到声明时,它会假定此隐式声明:int f();,这意味着该函数可以接收您提供的任何内容,并返回一个整数。如果这恰好足够接近(在 printf 的情况下,确实如此),那么事情就可以正常进行。在某些情况下(例如,函数实际上返回一个指针,并且指针大于整数),这可能会造成真正的麻烦。

请注意,这已在较新的 C 标准( C99C11 )中修复。在这些标准中,这是一个错误。但是,GCC 默认情况下并不实现这些标准,因此您仍然会收到警告。

关于c - C 中的隐式函数声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39952985/

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