首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C:在main下面定义函数--为什么要编译?

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

Stack Overflow用户
提问于 2013-08-05 21:45:09
回答 2查看 144关注 0票数 0
代码语言:javascript
复制
struct ack {
    char a, b, c;
};

main()
{
   struct ack bad;

   foo(bad);
}

foo(c)
   struct ack c;
{

}

这是gcc的一个测试案例。当我尝试使用gcc4.8编译它时,它编译时没有问题。但是,我了解到您必须在main之前声明您的函数。这为什么还要编译呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-05 21:46:51

试着用

代码语言:javascript
复制
-std=c11 -pedantic-errors

你会得到所需的诊断。

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

票数 6
EN

Stack Overflow用户

发布于 2013-08-05 22:51:13

通常情况下,当编译器在foo(bad)和foo中找到对main()的调用时,编译器假设它存在并返回int

如果在源文件中没有定义foo(),那么链接器就会抱怨这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18068315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档