0. 头文件的原理与使用
-
头文件是什么:
- 头文件是以
.h或.hpp(推荐 C++) 结尾的文本文件。 - 主要包含函数声明、类声明、全局变量声明、宏定义、枚举和结构体声明等。
- 允许在多个源文件中共享声明,实现代码复用和模块化编程。
- 头文件是以
-
为什么要用头文件:
- 避免重复代码: 将函数和变量的声明放在头文件中,多个源文件只需包含该头文件即可使用,无需重复编写声明。
- 提高代码可读性和可维护性: 将接口 (声明) 和实现分离,使得代码结构更清晰,修改接口时只需修改头文件。
- 支持模块化编程: 将程序划分为多个模块,每个模块有自己的头文件,便于组织和管理大型项目。
- 支持编译分离: 允许将一个项目拆分成多个独立的编译单元,然后链接在一起,加快编译速度。
-
如何使用头文件:
-
使用
#include预处理指令包含头文件。 -
包含系统头文件: 使用尖括号
< >,例如#include <iostream>。编译器会在系统头文件目录下搜索。 -
包含自定义头文件: 使用双引号
"",例如#include "myheader.h"。编译器会首先在当前源文件所在目录下搜索,如果找不到,则在系统头文件目录下搜索。 -
头文件内容:
- 声明而非定义: 通常在头文件中放置函数和变量的声明,而不是它们的定义。全局变量的定义通常放在一个
.cpp文件中。 - 类定义: 类定义通常放在头文件中。
- 内联函数: 内联函数的定义可以放在头文件中。
- 宏定义和常量: 常量可以使用
const或constexpr定义,宏定义也可以放在头文件中。
- 声明而非定义: 通常在头文件中放置函数和变量的声明,而不是它们的定义。全局变量的定义通常放在一个
-
避免重复包含: 使用头文件保护符 (include guards) 来防止头文件被多次包含,导致编译错误。
#ifndef MYHEADER_H #define MYHEADER_H // 头文件内容 #endif // MYHEADER_H -
组织自定义头文件: 建议将相关的声明放在同一个头文件中,并根据模块或功能进行组织。
-
-
现在流行用下面的方式:
#pragma once