返回介绍

4.1.3 函数的声明

发布于 2025-04-11 22:32:55 字数 1734 浏览 0 评论 0 收藏 0

函数在调用前需要定义,不然在编译后的链接时期就会出现链接错误。其实还有一点,就是函数在调用前需要进行声明,不然编译时会出现错误或警告。例如在使用标准库的 printf 函数时,不去包含“stdio.h”这个头文件,代码如下:

现在使用 gcc 编译器对其进行编译,会出现如下的警告信息:

test.c: In function 'main':
test.c:3:2: warning: implicit declaration of function 'printf' [-Wimplicit
-function-declaration]

问题就在于调用 printf 函数前没有对它进行声明。那怎么进行函数的声明呢?其实很简单,将函数的函数头部分取出来,后面加上一个分号,这就是函数的声明。

下面把 printf 函数的声明放在调用 printf 函数之前:

在函数声明中,形参的变量名是可以被省略的,但形参的数据类型不可省略。先不用关心 printf 函数声明中的那些“奇怪”的参数,在后面的章节中会有介绍。

保存源文件,再次对它进行编译,这回就没有任何错误或警告的信息了。在前面的案例中,我们调用 printf 函数时并没有进行函数声明,只是包含了“stdio.h”头文件,其实在这个头文件中就包含了 printf 函数的声明。

这里需要注意的是函数的定义已经包含了函数的声明,也就是说在调用函数之前的代码中,已经有了函数的定义,这时就不需要再进行单独的函数声明了。但如果函数的定义是在函数调用的代码之后,还是需要进行函数声明的,如图 4.3 所示。

图 4.3 函数的声明情况

最后需要说明的是,在 C 语言中,函数声明的位置和次数是无限制的。我们可以把函数声明和函数的调用放在同一个函数中,那么在该函数中,函数声明可以覆盖之后的所有函数调用,但其他函数中的函数调用仍然需要进行函数声明;也可以把函数声明放于包含函数调用的函数之前,这样函数声明可以覆盖其后的所有函数中的函数调用,如图 4.4 所示。

图 4.4 函数声明的覆盖范围

例如我们把 printf 函数的声明放在主函数的前面,这也是完全可以的:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。