分享
20、多文件与头文件
输入“/”快速插入内容
20、多文件与头文件
飞书用户5985
2024年3月10日修改
头文件的作用是方便其它源文件引用,引用头文件相当于复制头文件的内容。
当我们在写比较大的工程,例如上万行代码的,我们就需要考虑按功能模块划分为不同的源文件和头文件,方便代码编写、工程维护。
有两种类型的头文件:自行编写的头文件和编译器自带的头文件。前面我们已经看过
stdio.h
头文件,它是编译器自带的头文件。
引用头文件的语法
使用预处理
指令
#include
可以引用用户和系统头文件。它的形式有以下两种:
代码块
C
#include
<file>
这种形式用于引用系统头文件。它在系统目录的标准列表中搜索名为 file 的文件。
代码块
C
#include
"file"
这种形式用于引用用户头文件。它在包含当前文件的目录中搜索名为 file 的文件。
例子
test.c
代码块
C
#include <stdio.h>
int add
(int a,int b)
{
return a+b;
}
test.h
代码块
C
int add
(int a,int b);
main.c
代码块
C
#include <stdio.h>
#include "test.h"
int main()
{
int count = add(1,2);
printf("count = %d\n",count);
}
只引用一次头文件
如果一个头文件被引用两次,编译器会处理两次头文件的内容,这将产生错误。为了防止这种情况,标准的做法是把文件的整个内容放在条件编译语句中
,如下:
代码块
C
test.h
int a = 10;
app1.c
#include "test.h"
app2.c
#include "test.h"
编译时会报multiple definition of `a'错误,这时候可以添加
#ifndef TEST
int a = 10;
#endif
这种结构就是通常所说的包装器
#ifndef
。当再次引用头文件时,条件为假,因为 HEADER_FILE 已定义。此时,
预处理器
会跳过文件的整个内容,编译器会忽略它。