c语言哪些情况不用原型声明,必须在C中声明函数原型吗?

在C语言中,虽然不是必须的,但在调用函数前声明函数原型是一个良好的编程习惯。C89/90标准允许不声明原型,但可能导致编译器推断错误的函数签名。而在C99及以后的版本中,每个函数必须在调用前声明,不过非原型声明依然有效。使用函数原型可以确保编译器验证函数调用的正确性,避免不确定行为。
摘要由CSDN通过智能技术生成

必须在C中声明函数原型吗?

这个问题已经在这里有了答案:

C89,C90或C99中的所有功能都需要原型吗?                                     6个答案

我是C语言的新手(我以前有Java,C#和一些C ++经验)。 在C语言中,是否需要声明一个函数原型,或者如果没有它,代码是否可以编译? 这样做是好的编程习惯吗? 还是仅取决于编译器? (我正在运行Ubuntu 9.10,并使用Code :: Blocks IDE下的GNU C编译器或gcc)

10个解决方案

65 votes

既不需要在“旧” C(包括C89 / 90)中也不在新C(C99)中为C中的函数声明原型。 但是,C89 / 90和C99在函数声明方面有很大的不同。

在C89 / 90中,根本不需要声明函数。 如果在调用时未声明该函数,则编译器从调用中传递的参数类型中隐式“猜测”(推断)声明,并假定返回类型为printf。

例如

int main() {

int i = foo(5);

/* No declaration for `foo`, no prototype for `foo`.

Will work in C89/90. Assumes `int foo(int)` */

return 0;

}

int foo(int i) {

return i;

}

在C99中,必须在调用点之前声明调用的每个函数。 但是,仍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值