c - 任何人都知道为什么这个编译成功?

标签 c

谁知道为什么是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/

相关文章:

c++ - 为什么没有返回语句时没有任何编译器错误?

c++ - 理解 8 皇后拼图的对角搜索

c++ - 使用 gcc 在 Linux 上运行线程构建 block (Intel TBB)

c - 用于保存数据结构中元素计数的数据类型

c - 为什么某些格式说明符在 Visual Studio 2010 的 strftime 中不可用?

c - 左移操作。这个计算正确吗?

c - 当 malloc 返回时,8 字节对齐是什么意思?

c - sscanf 和 scanset 停止读取十六进制数

c - NULL 是指针吗?

c - Delphi PerlRegEx : Link . 静态 obj 文件,因此它们不依赖于 msvcrt.dll