C语言的“隐式函数声明”违背了 “前置声明” 原则

这个问题来源于小组交流群里的一个问题:

这里写图片描述

最终问题落脚在 : 一个函数在main中调用了,必须在main之前定义或者声明吗?

我在自己的Centos上做了实验,结果是函数不需要,但是结构体(变量也要)需要,如下图:

这里写图片描述

编译上面的程序,func函数只是一个警告,因此我以为C编译器不管前置声明,然后又测试了c++的编译器,发现不能通过编译,直接报错。

这里写图片描述

然后查询到C++前置声明的相关资料,强制要求前置声明:

https://stackoverflow.com/questions/4757565/what-are-forward-declarations-in-c

最后有关C这个问题的答案是:C语言的“隐式函数声明”惹的祸 :

知乎:https://www.zhihu.com/question/35890756

隐式函数声明:http://blog.csdn.net/smstong/article/details/50523120

[完]

posted on 2017-10-09 22:21  杨博东的博客  阅读(53)  评论(0编辑  收藏  举报

导航