本文是在C语言环境!不是C++环境!
我们必须找到一种行之有效的方案,使得头文件可以被包含多次,但效果与只包含一次相同。
在实际开发中,我们往往使用宏保护来解决这个问题。例如,在 xyz.h 中可以添加如下的宏定义:
#ifndef _XYZ_H
#define _XYZ_H
/* 头文件内容 */
#endif
标准头文件也是这样做的,例如在 Visual Studio 2010 中,stdio.h 就有如下的宏定义:
#ifndef _INC_STDIO
#define _INC_STDIO
/* 头文件内容 */
#endif
这种宏保护方案使得程序员可以“任性”地引入当前模块需要的所有头文件,不用操心这些头文件中是否包含了其他的头文件。