C++头文件重复编译

博客介绍了C++中头文件重复编译的问题及解决方法。当一个头文件被多次包含时会产生重复定义错误,如test2.h包含test1.h,main.cpp又同时包含二者。解决方法有两种,一是加#pragma once,但仅适用于微软编译器;二是使用#ifndef、#define和#endif,适用面更广。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

否则结束

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大学生毕设

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

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

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

打赏作者

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

抵扣说明:

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

余额充值