谁知道为什么是this在 C 中编译成功?
int main(){
display();
return 0;
}
void display(){
printf("Why am I compiling successfully?");
}
我认为当未提供声明时,C 假定 extern int Function_name(arg1,arg2,...){}。
因此这应该会出错,但它仍然有效!我知道 Ideone 正在抑制警告,但我的问题是为什么它不给出直接错误? (但是在 C++ 中这是直接错误)
最佳答案
在编译器中调高警告级别,您应该会收到 2 条警告,
display
未声明,int
假定
和
显示
重新声明
编辑:
C 的旧版本(C99 之前)并没有真正关心返回类型或参数类型。您可以说这是 K&R 遗产的一部分。例如,如果您没有显式指定参数类型,编译器根本不会检查它们。
C++ 更严格,这在我看来是件好事。当我用 C 编写代码时,我总是提供声明并指定参数列表。
关于c - 任何人都知道为什么这个编译成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13454158/