c++头文件防卫式声明
实例:
添加两个头文件head1.h,head2.h
在两个头文件中分别定义两个全局变量:
int g_globalh1 = 8;
int g_globalh2 = 5;
主程序中添加头文件声明:
#include "head1.h"
#include "head2.h"
打印:
cout << g_globalh1 << endl;
cout << g_globalh2 << endl;
目前没有问题。
但是当head2.h包含head1.h时,或者head2.h要用到head1.h的内容时:
#include "head1.h"
int g_globalh2 = 5;
报错:
显示重定义的错误。
我们无法确定谁include谁。
解决方法
使用条件编译。
head1.h:
#ifndef _HEAD1_H_
#define _HEAD1_H_ // !_HEAD1_H_
int g_globalh1 = 8;
#endif
head2.h:
#ifndef _HEAD2_H_
#define _HEAD2_H_
#include "head1.h"
int g_globalh2 = 5;
#endif
结果: