我有这两个文件:
// first.c
int main(void) {
putint(3);
}
和
// second.c
#include <stdio.h>
void putint(int n) {
printf("%d",n);
getchar();
}
当我在 Win XP 下运行 gcc 4.6.1 时:
gcc first.c second.c -o program.exe
它没有问题,并将 3 写入标准输出。它不需要putint
在first.c中声明。这怎么可能?这是标准行为吗?
我已经在 MSVC 2008 Express 上对此进行了测试,它仅在声明的情况下运行,如预期的那样。
// first.c
void putint(int);
int main(void) {
putint(3);
}
已解决,感谢提示,这些选项有助于显示警告:
- -Wimplicit
- -std=c99 (MinGW 4.6 默认仍使用gnu90 )