c语言,函数声明的误区

文章目录


项目上,使用一个未声明的,返回值为float类型的函数;结果,返回值完全非预期.被整的怀疑人生.

根深蒂固的一个错误认知:

在C语言中,函数在调用前不一定非要声明。
如果没有声明,那么编译器会自己主动依照一种隐式声明的规则,为调用函数的C代码产生汇编代码。

结论

期望,全部的人,全部的函数,都严格声明,不是很切实际.大的工程,人多眼杂.
但是要谨记:
返回值为非int类型的函数,务必要进行声明.

至少:
返回值为float/double类型的函数,务必要进行声明.

官方依据

C98的描述
If the expression that precedes the parenthesized argument list in
a function call consists solely of an identifier, and if no
declaration is visible for this identifier, the identifier is
implicitly declared exactly as if, in the innermost block containing
the function call, the declaration
    extern int  identifier();
翻译:
如果函数调用中带括号的参数列表之前的表达式仅包含一个标识符,
并且该标识符没有可见的声明,则隐式声明该标识符,
就像在包含函数调用的最里面的块中完全声明该声明一样。
    extern int identifier();

参考:
C语言直接调用未声明的函数
linux编程学习笔记(十) C语言中的函数隐式声明
万恶之源:C语言中的隐式函数声明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值