gpt4 book ai didi

C 原型(prototype)函数

转载 作者:太空狗 更新时间:2023-10-29 17:18:07 24 4
gpt4 key购买 nike

作为 C 语言的初学者,我可以理解文件中对函数原型(prototype)的需求,但不确定有几件事。

首先,main 之外的每个函数调用都需要原型(prototype)声明吗?有什么条件可以改变吗?

其次,方法重载是否需要单独的函数原型(prototype)?

最佳答案

C 中的函数调用不需要原型(prototype)可见,但强烈建议正确的原型(prototype)在范围内。

这样做的原因是,如果函数定义在执行默认函数参数提升后与函数参数的类型不匹配,则很可能会出现未定义的行为。

使正确的原型(prototype)可见意味着编译器可以检查函数调用的参数并在不匹配时警告程序员。

C 不允许重载函数,因此您只能为任何函数名称拥有一个原型(prototype)。

默认参数提升可能导致意外的不匹配。

例如

int main(int argc, char **argv)
{
short s = 5;
float f = 2.3f;
x(s, f); // x implicitly declared; default argument promotions performed
return 0;
}

int x(short t, float g) // Error: called with an int and a double
{
return (int)(t + g);
}

在函数调用中,因为x还没有可见的原型(prototype),s会被提升为intf 将被提升为 double。这些是默认参数提升。当使用采用 shortfloat 的原型(prototype)定义函数时,这会导致不匹配,即使这些是传入参数的原始类型。

采用可变数量参数的函数(即使用 , ... 语法)在调用它们时必须始终具有可见的原型(prototype)。

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

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