在C++编程中,在一个头文件中包含其他头文件是很常见的情况,而用户往往并不清楚地知道一个头文件是否已包含在其他头文件中,比如有两个头文件headA.h headB.h,在headA.h中包含了headB.h,用户需要同时用到这两个头文件,只要包含headA.h即可,因为headB.h已经包含在headA.h中了,但用户并不知道这点,会在程序中再次include <headB.h>,就造成headB.h被重复包含。为了避免头文件被重复包含,可在头文件中定义一个特殊名字的宏,在用户程序中需要包含该头文件时,首先检查这个宏是否被定义,如果已经存在,说明该头文件已被包含,则无需再次包含,否则,需要用户包含进来。代码如下
headB.h
......
#define HEADB
......
main.c
#include <headA.h>
#ifndef HEADB
#include <headB.h>
......