刚才写了一篇文章,c语言中函数的前置声明(MSVC编译器)
那篇文章采用的VC++6.0编译器编译的代码。也就是我们所说的MSVC编译器。
那么函数的前置声明规则对于MinGW编译器,是否也跟MSVC编译器一样呢?本篇文章采用MinGW编译器做测试。
文章目录
隐藏
不写前置声明
#include <stdio.h> int main(void) { printf("%d\n", add(1, 1)); return 0; } int add(int a, int b) { return a+b; }
跟MSVC一样,会产生一个Warning:
写带参数的前置声明
#include <stdio.h> int add(int a, int b); int main(void) { printf("%d\n", add(1, 1)); return 0; } int add(int a, int b) { return a+b; }
不带参数的前置声明
#include <stdio.h> int add(); int main(void) { printf("%d\n", add(1, 1)); return 0; } int add(int a, int b) { return a+b; }
这么来看,不管是MSVC编译器还是MinGW编译器。如果不写前置声明,都是会有warning出现的,但都不影响执行。
总结
遇到函数前置声明问题,
建议大家:
- 都要写前置声明。养成良好的变成习惯,让代码0warning最好。
- 参数加不加其实都无所谓。
- 可以在写代码调试的时候,不加参数。这样不用在改函数头时候还要翻到最前面改参数。(前置声明的参数你可以不写,但不能写成错误的!!)
- 在代码完工的时候,建议把前置声明的参数都加上。这样将来你自己或者其他人接手这段代码的时候,就很方便的在main函数之前,就知道有哪些函数存在。一目了然。