struct ack {
char a, b, c;
};
main()
{
struct ack bad;
foo(bad);
}
foo(c)
struct ack c;
{
}这是gcc的一个测试案例。当我尝试使用gcc4.8编译它时,它编译时没有问题。但是,我了解到您必须在main之前声明您的函数。这为什么还要编译呢?
发布于 2013-08-05 21:46:51
试着用
-std=c11 -pedantic-errors你会得到所需的诊断。
默认情况下,gcc使用-std=gnu89编译,这是c89 + GNU扩展。隐式声明的c89规则已在c99中删除。
发布于 2013-08-05 22:51:13
通常情况下,当编译器在foo(bad)和foo中找到对main()的调用时,编译器假设它存在并返回int。
如果在源文件中没有定义foo(),那么链接器就会抱怨这个问题。
https://stackoverflow.com/questions/18068315
复制相似问题