C 语言编译出现 implicit declaration of function 错误

在学习 c 语言的过程中,手动使用 clang 进行编译的时候,碰到自定义函数会报出下面的错误:

 

error: implicit declaration of function 'm' is invalid in C99

      [-Werror,-Wimplicit-function-declaration]

(gcc 中会报出 warning,而不是 error)

 

经过排查,发现是没有在头文件那里提前声明自定义函数,所以提前声明之后再进行编译就 OK 了.

简单举例:

 1 #include <stdio.h>
 2 
 3 int m(int x, int y);  // 在这里提前进行声明
 4 int main(int argc, char const *argv[])
 5 {
 6     int a, b, c;
 7     printf(" 输入两个整数:\n");
 8     scanf("%d%d", &a, &b);
 9     c = m(a, b);
10     printf("%d\n", c);
11     return 0;
12 }
13 
14 int m(int x, int y) {
15     int z;
16     z = x > y ? x : y;
17     return z;
18 }

 

或者是把 main 函数写在文件最下面,也就是自定义函数在上,main 函数在下:

 1 #include <stdio.h>
 2 
 3 int m(int x, int y) {
 4     int z;
 5     z = x > y ? x : y;
 6     return z;
 7 }
 8 
 9 int main(int argc, char const *argv[])
10 {
11     //int m(int x, int y);
12     int a, b, c;
13     printf(" 输入两个整数:\n");
14     scanf("%d%d", &a, &b);
15     c = m(a, b);
16     printf("%d\n", c);
17     return 0;
18 }

 

上一篇:VS Code 1.60.1配置并调试golang


下一篇:C++的97个关键词概览(至20210216)