@
NightFlame 抱歉,我的印象比较久了。我测试了一下,用以前旧的 C89 标准是可以的。C99 标准不允许了。
两个 c 文件
~ $ cat a.c
int main(){
f();
}
~ $ cat b.c
void f(){}
用 C89 编译,只给了个 warning:
~ $ clang -std=c89 -Wall a.c b.c
a.c:2:5: warning: implicit declaration of function 'f' [-Wimplicit-function-declaration]
2 | f();
| ^
1 warning generated.
用 C99 编译,不通过:
~ $ clang -std=c99 -Wall a.c b.c
a.c:2:5: error: call to undeclared function 'f'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
2 | f();
| ^
1 error generated.