函数声明的意义

是的,函数也应该是先定义后引用才对,如果引用前未定义,解决的办法就是在引用前声明一下函数原型就可以了。但是你也许发现了,在你曾经的练习代码中,你有时候没有遵循以上原则,似乎也编译通过并得到了正确的结果。

 

为什么要声明:

如果我的引用在定义之前发生,那么我通过原型去声明一个函数的意义在于告诉编译器,我的这个函数的参数个数,每个参数的类型,以及返回值类型。由此,在参数入栈的时候才会分配合适的空间给每个参数。

如果你在引用之前并未声明函数,并且函数的定义滞后于引用,这在gcc中这并不会引起编译错误。首先在引用发生时编译器通过函数名称可以在将来对应到函数的入口点(如果你压根儿没定义该函数,那就另当别论了),其次编译器会在无法确定该函数的参数类型的情况下,视其为int类型,包括返回值通通视为int类型,所以如果你的实际参数类型宽度大于int的话,会导致截断发生,因此,你得到正确结果的可能性渺茫,(周同学发生的问题就是float被强制转换为int了。)

 

以上观点纯属我个人通过技术方法验证后的推理,并没有仔细阅读权威的文档(没去找),所以仅供参考!如果你有别的观点请回复探讨,共同进步!

 

你的知识只有和大家分享了你才能获得快感!!!!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YasinLeeX

再来一杯西湖龙井。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值