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 定义+下面的代码

否则结束

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

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大学生毕设

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值