struct ack {
char a, b, c;
};
main()
{
struct ack bad;
foo(bad);
}
foo(c)
struct ack c;
{
}
这是 gcc 中的一个测试用例。当我尝试使用 gcc4.8 编译它时,它编译没有问题。但是,我了解到您必须在 main 之前声明您的函数。为什么这甚至可以编译?
最佳答案
尝试编译
-std=c11 -pedantic-errors
您将获得所需的诊断。
默认 gcc
使用 -std=gnu89
编译,这是 c89 + GNU 扩展。隐式声明的 c89 规则已在 c99 中删除。
关于C: 在 main 下定义函数 - 为什么编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18068315/