头文件互相引用导致报错

目录

1. 原因分析

2. 错误示例

3. 解决方案


1. 原因分析

循环依赖问题:

a.h包含b.h,而b.h又包含a.h时,编译器在处理时会陷入无限递归或跳过部分内容。即使使用头文件保护宏(#ifndef / #define / #endif),第一次处理a.h时会展开b.h,而b.h再次包含a.h时会被保护宏跳过。此时,若b.h依赖a.h中未完全定义的类或结构体,编译器会因类型未声明而报错。

下面是例子

Test1.h

#ifndef _TEST1_H_
#define _TEST1_H_

#include "Test2.h"  // 直接依赖b.h
struct A { B* b_ptr; };

#endif

Test2.h

#ifndef _TEST2_H_

#define _TEST2_H_

#include "Test1.h"  // 直接依赖a.h

struct B { A* a_ptr; };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值