【发布时间】:2020-09-28 05:11:57
【问题描述】:
我是 C 新手,遇到了这样的说法:
“函数需要在 .h 文件中声明,并且除了内联函数之外没有定义”。
那么我的问题是,标准函数在哪里定义?
【问题讨论】:
-
您误解了该声明。就是说头文件通常应该只包含函数声明而不是函数定义。函数定义在
.c文件中。这对于标准函数和您自己的函数都是一样的。 -
@kaylum 更详细地说,当我们包含 stdio.h 时,头文件中只包含函数和全局变量的声明,对吗?这就是我的困惑开始的地方。链接器从哪里知道它们的声明。 (整个论点以标准标题开始)
-
链接器在标准位置以及您在命令行上告诉它的任何位置查找库(例如,
gcc的-L选项)。这些库具有包含已编译函数定义代码的二进制对象。 (粗略地说) -
@kaylum 好的。所以,当我制作自己的头文件时,我只需要声明该文件中的函数并制作一个包含所有声明的文件并编译它。然后告诉编译器它需要从哪里链接它的目标代码。对吗?
标签: c function header-files function-prototypes function-definition