C语⾔编译出现implicitdeclarationoffunction错误
在学习 c 语⾔的过程中,⼿动使⽤ clang 进⾏编译的时候,碰到⾃定义函数会报出下⾯的错误:
error: implicit declaration of function 'm' is invalid in C99
[-Werror,-Wimplicit-function-declaration]
自定义函数怎么用c语言(gcc 中会报出 warning,⽽不是 error)
经过排查,发现是没有在头⽂件那⾥提前声明⾃定义函数,所以提前声明之后再进⾏编译就 OK 了.
这种声明称为函数原型,作⽤是让编译器在编译时对程序中的函数调⽤检查合法性.⾮法的函数调⽤将导致编译失败,即出现语法错误,⽤户可以根据错误信息来调试程序.
同时在函数原型中,可以省略各个形参的名称,⽽只写出形参类型:
int m(int, int);
简单举例:
1 #include <stdio.h>
2
3int m(int x, int y); // 在这⾥提前进⾏声明
4int main(int argc, char const *argv[])
5 {
6int a, b, c;
7 printf(" 输⼊两个整数:\n");
8 scanf("%d%d", &a, &b);
9 c = m(a, b);
10 printf("%d\n", c);
11return0;
12 }
13
14int m(int x, int y) {
15int z;
16 z = x > y ? x : y;
17return z;
18 }
或者是把 main 函数写在⽂件最下⾯,也就是⾃定义函数在上,main 函数在下:
1 #include <stdio.h>
2
3int m(int x, int y) {
4int z;
5 z = x > y ? x : y;
6return z;
7 }
8
9int main(int argc, char const *argv[])
10 {
11//int m(int x, int y);
12int a, b, c;
13 printf(" 输⼊两个整数:\n");
14 scanf("%d%d", &a, &b);
15 c = m(a, b);
16 printf("%d\n", c);
17return0;
18 }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论