admin 管理员组

文章数量: 887021

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 declarationextern int  identifier();
翻译:
如果函数调用中带括号的参数列表之前的表达式仅包含一个标识符,
并且该标识符没有可见的声明,则隐式声明该标识符,
就像在包含函数调用的最里面的块中完全声明该声明一样。extern int identifier();

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

本文标签: C语言 函数声明的误区