有谁知道为什么这个编译成功了?

有谁知道为什么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个警告,

显示未声明,假定为int

显示重新宣布

编辑:

较早版本的C(前C99)并不是真的对返回类型或参数类型感到困扰.你可以说这是K& R遗产的一部分.例如,如果您没有显式指定参数类型,编译器将根本不检查它们.

C更严格,IMO是一件好事.我总是提供声明,并且在我用C编码时总是指定参数列表.

翻译自:https://stackoverflow.com/questions/13454158/anybody-knows-why-is-this-compiling-successfully

转载注明原文:有谁知道为什么这个编译成功了?