多文件编译,在我们最早编写Hello World程序时我们就将程序写在了一个后缀名为.c的文本文件里,然后通过gcc编译器对其编译并运行。在本节我们将学习如何编写多个源文件的程序
一、头文件header与源文件source
通常我们会在头文件中一些类型的定义、结构体定义、宏定义、函数声明、include包含等内容。而在源文件中编写实际的功能实现。
例如我们可以在头文件hello.h中写入如下内容
/* hello.h */
#include void print_hello(void);
其中包含了标准输入输出头文件,类型定义,函数的声明等内容,而我们再编写一个hello.c的源文件:
/* hello.c */
#include "hello.h"
void print_hello(void)
{
printf("Hello World!\n");
}
源文件中包含了hello.h这个头文件,于是在这个hello.c文件中就可以使用这些在头文件中定义的内容,可以使用自定义类型、自定义函数、标准输入输出函数等。在使用gcc编译代码时只需要指定hello.c即可编译器会根据#include "hello.h"找到这个头文件,注意hello.h和hello.c要存放在同一个目录下。
值得详细讲述的还有include的路径问题,当使用<>来指定包含的头文件时,编译器会从系统头文件库中进行查找,而使用""来包含的头文件,编译器将会从当前程序目录进行查找。在include时被包含文件可以是绝对路径,也可以是相对路径,总之