include是C++预处理器指令,用于在编译前将指定文件内容插入源文件。使用包含系统头文件,""包含用户自定义头文件,前者仅搜索系统路径,后者优先查找本地目录。#include本质是文本替换,常用于引入标准库或共享声明,需通过#ifndef或#pragma once防止重复包含,正确使用可提升代码组织与维护性。

#include 是 C++ 中最重要的预处理器指令之一,它的作用是在编译之前将指定的文件内容插入到当前源文件中。这个过程由预处理器完成,发生在真正的编译开始之前。
一、#include 的基本语法
#include 指令有两种常见的写法:
-
#include
—— 用于包含系统头文件(如标准库) - #include "filename" —— 通常用于包含用户自定义的头文件
例如:
#include iostream>#include "myheader.h"
第一行引入了标准输入输出库,第二行引入了项目中的自定义头文件。
立即学习“C++免费学习笔记(深入)”;
二、#include 的工作原理
当预处理器遇到 #include 指令时,它会:
- 打开指定的文件
- 将该文件的全部内容复制并插入到当前文件中 #include 所在的位置
- 继续处理合并后的内容
这意味着,#include 并不是“引用”或“链接”,而是“文本替换”——就像把另一个文件的内容粘贴过来一样。
三、尖括号与双引号的区别
编译器在查找头文件时,对两种格式有不同的搜索策略:
- <...>:只在系统指定的标准头文件目录中查找,比如 /usr/include 或编译器自带的库路径。适用于标准库或第三方库头文件。
- "...":先在当前源文件所在目录查找,如果没有找到,再按系统路径搜索。适合项目内部的头文件引用。
四、常见用途和最佳实践
#include 主要用于引入函数声明、类定义、宏、常量等接口信息。
- 使用 #include 引入标准库功能,如
、 、 - 在多个源文件之间共享声明时,创建 .h 头文件并通过 #include 包含
- 避免重复包含:使用 #ifndef / #define / #endif 守护或 #pragma once
示例:防止头文件重复包含
#ifndef MYHEADER_H#define MYHEADER_H
// 头文件内容
#endif // MYHEADER_H
基本上就这些。#include 看似简单,但它是构建大型 C++ 项目的基础机制之一,理解其行为有助于避免编译错误和提高代码组织能力。











