gpt4 book ai didi

c - 了解 C 中的函数原型(prototype)

转载 作者:太空宇宙 更新时间:2023-11-04 04:56:29 26 4
gpt4 key购买 nike

  1. 下面的代码:

之前

void main()
{
float x;
fun(x,x,x);
}
fun(float x,float x){}

可能不起作用,因为实际参数被提升为 double ,这与函数定义不匹配,对吧?

之后

void main()
{
float x;
fun(x,x,x);
}
fun(double x,double x){}

有效。当编译器可以检查数据类型时,为什么它不能检查参数个数呢?根据定义必须只有两个!!!?

  1. 此外,允许非原型(prototype)的意义是什么无效乐趣();当它们不帮助检查函数调用时传递的参数时,它们有什么区别,为什么要支持它们?

谢谢:)

最佳答案

原型(prototype)必须出现在函数调用之前才有用;在调用之前定义函数:

void fun (float x, float y) {} // IMPLICIT TYPING IS BAD JUJU!

int main(void) // Unless the documentation for your compiler *explicitly* says
// that "void main()" is a legal signature, main should
// always return int.
{
float x;
fun(x,x,x);
return 0;
}

或者单独声明:

int main(void)
{
void fun(float x, float y);
float x;
fun(x,x,x);
return 0;
}

void fun(float x, float y) {}

我更喜欢第一个版本。

关于c - 了解 C 中的函数原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7068953/

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