C++头文件重复编译

重复编译即为重复执行了某一个.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 定义+下面的代码

否则结束

通过这种方式也实现了避免文件重复编译的错误。

所以在写代码的时候,最好在文件创建之后,先加上这三句话,然后再编写代码,防止出错。

猜你喜欢

转载自blog.csdn.net/qq_46423166/article/details/112408160