#include <stdio.h> int main(void) { sayHi(); } void sayHi() { printf("hello world"); }
以上代码无法编译通过,把sayHi()函数放在main函数之前就可以了,但是假如sayHi()函数是个有返回值的,就可以编译通过,这是为什么?为什么有返回值的就可以不用放在main函数之前呢?
下面这段有返回值的就可以编译通过 成功运行
#include <stdio.h> int main(void) { printf("%d\n",sayHi()); } int sayHi() { return 1; }
解决方案
20
C语言
调用没有声明过的函数,会默认声明一个返回类型为 int 的函数。
然后看到了函数的定义,假如这个定义的函数类型与前面默认声明的不一致,就会出错。在C语言中,同名的函数只能有一个。对这个函数的多次声明/定义中,其类型必须一致。
后面那个将函数定义为返回int ,定义与默认声明是一致的。
===========
建议,即使在 C 语言中,每一个需要被调用的函数都要提前声明一下。