在学习 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 }