重复编译即为重复执行了某一个.h文件
情况如下:
下面是test1.h和test2.h;test2.h中包含了test1.h
下面是main.cpp,包含了上面这个.h文件
运行的时候,我们直到main.cpp运行时,先运行test1.h,然后运行test2.h,但是test2.h中包含了test1.h。所以就会产生test1.h重复定义。因此就会报错
解决方法
第一种:
在test1.h代码最前面加上#pragma once
此时当第二次调用test1.h时就会判断时候被调用过,从而避免发生错误。
但是这种方法仅适用于微软的编译器,所以适用面不够广。
第二种:
将程序改为
#ifndef TEST1_H_
#define TEST1_H_
。。。。。。
#endif
我们看下这几句代码的意思:
首先ifndef即为 if not define:意思是如果没有定义则执行下面的 define 定义+下面的代码
否则结束
通过这种方式也实现了避免文件重复编译的错误。
所以在写代码的时候,最好在文件创建之后,先加上这三句话,然后再编写代码,防止出错。