反思引入头文件和宏定义
2006-07-08 10:01
260 查看
宏的作用之一是:保证用户自定义头文件和系统定义头文件在编译源程序时只引入一次。
比如有一个用户自定义头文件a.h,它的内容是:
---------------------
#ifndef __BTDISCOVERYAPPVIEW_H__
#define __BTDISCOVERYAPPVIEW_H__
#include <coecntrl.h>
#include <btmanclient.h>
#include <btextnotifiers.h>
#include <aknlists.h>
#include "Reporter.h"
#include "BTDiscoverer.h"
#endif
--------------------
a.h这个头文件我们在b.h中进行引入,同时也引入一个头文件<coecntrl.h>即b.h的内容为:
--------------------
#include "a.h"
#include <coecntrl.h>
--------------------
而我们在a.h中已经引入了<coecntrl.h>,那么在b.h中又引入一次<coecntrl.h>会不会导致这个头文件在编译程序时被引入两次那?
答案是否定的,因为在系统头文件<coecntrl.h>中,也定义了一个宏:
#if !defined(__COECNTRL_H__)
#define __COECNTRL_H__
通过定义宏,这样在编译源程序时,就能够保证用户自定义头文件和系统定义头文件只能被引入一次。
比如有一个用户自定义头文件a.h,它的内容是:
---------------------
#ifndef __BTDISCOVERYAPPVIEW_H__
#define __BTDISCOVERYAPPVIEW_H__
#include <coecntrl.h>
#include <btmanclient.h>
#include <btextnotifiers.h>
#include <aknlists.h>
#include "Reporter.h"
#include "BTDiscoverer.h"
#endif
--------------------
a.h这个头文件我们在b.h中进行引入,同时也引入一个头文件<coecntrl.h>即b.h的内容为:
--------------------
#include "a.h"
#include <coecntrl.h>
--------------------
而我们在a.h中已经引入了<coecntrl.h>,那么在b.h中又引入一次<coecntrl.h>会不会导致这个头文件在编译程序时被引入两次那?
答案是否定的,因为在系统头文件<coecntrl.h>中,也定义了一个宏:
#if !defined(__COECNTRL_H__)
#define __COECNTRL_H__
通过定义宏,这样在编译源程序时,就能够保证用户自定义头文件和系统定义头文件只能被引入一次。
相关文章推荐
- HTML外部文件引入
- 在total 文件中引入其他的类
- iOS之在webView中引入本地html,image,js,css文件的方法
- 防止头文件多次引入
- 使用link与@import引入css文件用法区别
- wince下sources\sources.cmn\Makefile.def的相关作用(含source文件中的宏定义和dirs文件)
- 使用vue-cli搭建项目的使用,需要引入font-icon文件,报错的解决办法
- 1.2.6 引入文件
- 在一个PHP文件中引入另一个文件的方法
- 基础C ,预处理指令,宏定义,文件包含
- Html 拖拽排序代码(需要引入jquery.js文件)
- 引入js和css文件的总结
- Lucene4.2源码解析之fdt和fdx文件的读写——fdx文件存储一个个的Block,每个Block管理着一批Chunk,通过docID读取到document需要完成Segment、Block、Chunk、document四级查询,引入了LZ4算法对fdt的chunk docs进行了实时压缩/解压
- 如何在CodeIgniter中引入外部的JS和CSS文件
- Spring的xml配置文件引入不同jar包的xsd看jar包功能-递增模式
- 引入样式表 及脚本文件
- 引入外部JS或CSS文件的写法
- 《UNIX环境高级编程》第二版:Apue.h文件引入
- 如何在jsp页面中引入css样式表文件和javascript文件
- PHP引入文件出现空白行问题