宏的作用之一是:保证用户自定义头文件和系统定义头文件在编译源程序时只引入一次。
比如有一个用户自定义头文件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__
通过定义宏,这样在编译源程序时,就能够保证用户自定义头文件和系统定义头文件只能被引入一次。