C: 在 main 下定义函数 - 为什么编译?

标签 c

struct ack {
    char a, b, c;
};

main()
{
   struct ack bad;

   foo(bad);
}

foo(c)
   struct ack c;
{

}

这是 gcc 中的一个测试用例。当我尝试使用 gcc4.8 编译它时,它编译没有问题。但是,我了解到您必须在 ma​​in 之前声明您的函数。为什么这甚至可以编译?

最佳答案

尝试编译

-std=c11 -pedantic-errors

您将获得所需的诊断。

默认 gcc 使用 -std=gnu89 编译,这是 c89 + GNU 扩展。隐式声明的 c89 规则已在 c99 中删除。

关于C: 在 main 下定义函数 - 为什么编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18068315/

相关文章:

c connect() 错误 - 参数无效

c - 在 C 中处理超过 127 的 char 值

c - fscanf 段错误 - C

c - 在嵌入式系统中从汇编语言切换到 C 语言

C 如何在命令行中传递确切数量的参数

c - 反转单向链表

c - 重新连接用 C 编写的 websocket 客户端

c++ - 将 8 位数据转换为 3 位数据

c - 访问 malloc 声明的数组

c++ - __do_global_ctors_aux 未显示在 objdump 中