include是什么意思:编程引入文件专用指令用法全解

include是什么意思:编程引入文件专用指令用法全解

include是C、C++等编程语言里的预处理指令,意思是引入指定头文件内容,编译器执行编译前期,会把include后面文件的全部代码直接复制粘贴到当前代码位置,你不用重复编写公共函数、常量定义,直接调用外部文件代码就能完成功能编写,不同编译环境下include查找文件的路径规则不一样,直接写文件名只会检索程序默认目录,写尖括号和双引号查找范围有明确区分,混用会直接出现文件找不到的编译报错。

include两种书写格式的查找规则

你书写include语句时有双引号和尖括号两种写法,二者查找文件的优先级完全不同。使用<文件名>格式时,编译器只会去系统自带的库文件目录里面检索头文件,标准库文件比如stdio.h、stdlib.h都要用这种格式书写。使用"文件名"格式时,编译器会优先查找当前源代码所在的文件夹,找不到之后再去系统库目录检索,自己新建的自定义头文件,必须使用双引号包裹文件名。

重复书写同一个include语句,会造成代码重复编译,程序会报变量重复定义的错误,你不需要手动删除重复语句,只需要在头文件开头加上保护宏,就能避免多次引入带来的问题。只需要在自定义头文件最顶部编写#ifndef标记,结尾加上#endif语句,编译器遇到重复引入时会自动跳过文件内容。

书写格式 查找顺序 适用文件类型
#include 仅系统标准库路径 系统自带标准头文件
#include"xxx.h" 当前工程目录→系统库路径 自己编写的自定义头文件

include只发生在代码预处理阶段,不属于程序运行时执行的代码,程序运行过程中不会再执行这条指令,这也是它无法根据程序运行状态动态引入文件的原因。如果你想要实现运行时加载功能,不能依靠include指令,需要调用编程语言提供的动态链接库相关接口。

你可以在include语句里填写相对路径来引入不在同一文件夹的头文件,用../符号向上跳转文件夹层级,路径书写错误会直接触发致命编译错误,编译工具无法定位文件位置就会直接终止编译流程。路径层级不要写得过于复杂,多层跳转不仅可读性变差,更换工程存放位置后所有include语句都需要同步修改路径。

标准库的头文件不需要你手动编写源码,include引入之后就可以直接使用里面封装好的输入输出、字符串处理等函数。自定义头文件里面只存放函数声明、宏定义、结构体定义,函数的具体实现要写在对应的源文件当中,只依靠include引入声明文件,程序链接阶段会自动匹配对应的实现代码。

不要把大量业务代码直接写在头文件当中,大量代码随include多次引入会造成代码冗余,增大程序体积,还极易引发多重定义编译错误。头文件只保留声明内容,所有功能实现统一存放于.c或者.cpp源文件当中。

了解更多百科知识请访问 百科