编译两个C文件时不需要函数声明



我试图同时编译以下C文件

file1.c

#include<stdio.h>
int main()
{
    foo();
    return 0;
}

file2.c

#include<stdio.h>
void foo()
{
    printf("Hello");
}

我使用Linux中的以下命令编译了两个文件 gcc file1.c file2.c -o文件

它成功编译而没有任何警告,并且在运行时将输出作为" Hello'应该不应该file1.c需要像void foo((这样的原型。C标准中有什么吗?

在C99之前,C有一个称为隐式声明的东西。

如果您没有指定foo的声明,并且称为foo,则隐式称为int foo();

但是,从C99和随后的标准中删除了这一点。

最新更新