2013-11-02 84 views
1

我已经看到C程序分为.h文件及其各自的.c文件。混合.c和.h文件

我知道头文件是用于宏定义/声明/函数原型和.c文件的函数定义。

但这些.c如何被使用?通过编译器的命令行?

+1

请仔细阅读你的问题,并问问自己 - 这可以合理回答,没有进一步的信息/背景?你知道如何使用'makefile'吗? – Floris

回答

4

C文件不是由编译器组合的,而是由linker组合的。根据您编译代码的方式,这可能会对您隐藏。

编译器将为每个C文件将每个C文件编译为object file。然后链接程序将把这些目标文件合并成可执行文件或库文件。

1

2个选择:

  • .c文件传递给编译器的命令行,都在一起,一个“编译和链接都在一个”命令。您通常只对玩具和非常小的项目做这件事

  • 单独编译每个.c文件(将其作为单独的编译命令行),生成.o文件。然后将所有这些.o文件一起传递给链接器(通常它与编译器的命令相同......)以创建可执行文件。这样,如果您更改.c文件,则只需编译该文件(以再次创建其.o文件)和链接,节省大量时间。

+1

而选项3,使用'make'或类似的系统为你编排编译(注意它将采用选项2来完成它的工作)。 –

+0

@JonathanLeffler'make'只是为你运行命令。对于这个问题,你可以回答“把文件交给知道如何去做的人”。它什么都不教。另外,你必须编写'Makefile'。 – rabensky