warning: implicit declaration of function ‘m‘ is invalid in C99

编译报错: implicit declaration of function ‘m’ is invalid in C99
即 函数 “m” 的隐式声明在C99中无效

原因:

C语言是过程化的编程语言,程序执行顺序是从上到下。函数调用需要先声明后调用。 C99 默认不允许隐式声明(1999年推出的c语言标准)。
在之前的版本中,在C语言函数在调用前不声明,编译器会自动按照一种隐式声明的规则,为调用函数的C代码产生汇编代码。

没有在头文件那里提前声明自定义函数,所以提前声明之后再进行编译。

这种声明称为函数原型,作用是让编译器在编译时对程序中的函数调用检查合法性。非法的函数调用将导致编译失败,即出现语法错误,用户可以根据错误信息来调试程序。

解决办法:

在 main 函数调用前声明一下该函数。
(1)直接放到 main 函数前。
(2)或者定义在 .h 头文件中,在main函数前引入该头文件。
(3)使用老版本编译。 【不推荐】

方法1:

 1 #include <stdio.h>
 2 
 3 int m(int x, int y);  // 在这里提前进行声明
 4 int main(int argc, char const *argv[])
 5 {}

方法2:

 1 #include <stdio.h>
 2 
 3 int m(int x, int y) {  //自定义函数在上,main 函数在下
 4     int z;
 5     z = x > y ? x : y;
 6     return z;
 7 }
 8 
 9 int main(int argc, char const *argv[])
10 {}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值