鞍山制作公司网站的公司,建筑工程网官网入口,广州工程项目,外贸柒夜网站建设目录
前言
头文件被包含的方式
嵌套文件包含
使用条件编译指令规避头文件多次包含 还有一个编译指令#xff0c;同样能做到以上功能 前言
条件编译指令多用于对头文件的定义和判断以及删除 头文件被包含的方式
本地文件包含#xff08;也就是自己创建的头文件#xff…目录
前言
头文件被包含的方式
嵌套文件包含
使用条件编译指令规避头文件多次包含 还有一个编译指令同样能做到以上功能 前言
条件编译指令多用于对头文件的定义和判断以及删除 头文件被包含的方式
本地文件包含也就是自己创建的头文件
#include stdio.h
本地文件包含的查找策略 会现在源文件所在的目录下查找如果该头文件没有查找到编译器就会像查找库函数的头文件一样在标准位置查找该头文件如果再找不到就会提示编译错误
库文件包含
#includestdio.h库文件包含的查找策略
查找库里面的头文件时编译器会直接去标准路径下查找如果找不到就会提示编译错误
结论
库里面的头文件也可以使用 的形式包含但这样的话查找头文件的效率就低了且这样也不容易区分是库文件还是本地文件了所以本地文件使用 的形式包含库文件使用 的形式包含 嵌套文件包含
在一个工程项目里面可能 .h 文件包含了其他 .h 文件也有可能互相包含这样的结果就会导致同一份 .h 文件出现多次这样就造成了文件内容的重复
解决以上文件就需要使用到条件编译指令来判断和删除头文件 使用条件编译指令规避头文件多次包含
代码演示
#ifndef __TEST_H_
#define __TEST_H_int Add(int x, int y);#endif
以上代码的头文件为#include test.h
代码解析 #ifndef 编译指令的功能是当后面的表达式为假的时候也就是没有定义时就执行中间的代码否则就不执行且头文件为 test.h 那么要使用 #ifndef 来判断的话最好是将 test.h 写成 __TEST_H_ 的形式便于理解
当其他头文件包含此 test.h 头文件时也就是当程序第一次进入此头文件的时候程序肯定没有包含过此头文件所以 #ifndef 判断就会为假#ifndef 中的代码就会执行且 #define 就会定 义 __TEST_H_ 这个头文件
所以当第二次以后其他头文件包含此文件时#ifndef 判断就会为真#ifndef 中的代码就不会再执行
这样就规避了同一份 .h 文件出现多次且文件内容重复的情况 还有一个编译指令同样能做到以上功能
代码演示
#pragma once
只要将这条指令放在头文件的最开始位置也同样能实现以上功能