为什么我要导入头文件和C文件?

时间:2014-01-22 23:33:10

标签: c header-files

在我的main函数中,我调用在头文件中声明的函数。我已在主要文件中导入了我的头文件。但是,编译器给出了函数的未定义引用。头文件的功能的实现在另一个C文件中。要编译和工作我的main,我必须导入C文件。

我的问题是:除了头文件之外,为什么还要导入C文件。

例如,当我包含stdlib.h时,此文件是否也具有其函数的实现或仅具有声明?

3 个答案:

答案 0 :(得分:2)

如果你的代码不起作用,除非#include是一个C文件,你就没有正确编译它。您应该单独编译这两个模块,主模块仅包括其他模块的标题。然后你应该把它们连在一起。

在运行gcc的UNIX上,您可以使用单个命令进行编译和链接:

gcc helper.c main.c

注意:如果您在UNIX上进行开发,您应该学习如何使用makefile来管理单独的编译。 Here is a tutorial covering the use of makefiles for compiling C++ code.

答案 1 :(得分:0)

您不必包含头文件(有时),但必须链接目标文件。对象文件包含您尝试使用的函数体,这就是为什么没有它就无法调用它们。

Read further to find out why headers are important and their history

答案 2 :(得分:0)

'#include'只是告诉编译器你正在使用的文件的接口。(声明)。#include会使编译器满意。

此外,您必须具有通常位于* c文件中的实际实现(定义)。这使链接器感到高兴。

如果包含stdlib.h - 包含正确的C运行时。