若在一个头文件中定义变量,如在head.h中有
#ifndef __HEAD__
#define __HEAD__
int a;
#endif
而有两个.c/cpp文件,如a.c, b.c include head.h,则会出错,出现了变量的重定义
其中#ifndef用于保护同一个cpp文件不重复包含头文件,但如果是两个cpp文件,他们会在编译阶段分别生成两个obj文件,#ifndef的作用是保证在每一个obj文件中没有头文件的重复包含。也就是说,如果该头文件包含在两个cpp文件中,在链接过程就会报错“重定义”。