两头文件相互包含,且内容相互引用问题

//HEAD1.H
#ifndef __HEAD_1_H__
#define __HEAD_1_H__  //防止多次包含,重复定义

#include "head2.h"

#define VAR_MACRO  1          //define a macro, which used in head2.h

bool func(ClassA* CA);        //ClassA is defined in head2.h

#endif 
#ifndef __HEAD_2_H__
#define __HEAD_2_H__  //防止多次包含,重复定义
#include "head1.h"
class ClassA{ 
int mVar; 
void setMem(){ mVar = VAR_MACRO }; //macro VAR_MACRO is defined in head1.h 
};
#endif 

将以上两文件分别展开有:

HEAD1.h

class ClassA{
  int mVar;
  void setMem(){ mVar = VAR_MACRO }; // VAR_MACRO 未定义
  ...     //other members and functions
};

#define VAR_MACRO  1          //define a macro, which used in head2.h

bool func(ClassA* CA);        //ClassA is defined in head2.h

HEAD2.h

#define VAR_MACRO  1          //define a macro, which used in head2.h

bool func(ClassA* CA);        //ClassA *CA未定义

class ClassA{
  int mVar;
  void setMem(){ mVar = VAR_MACRO };    //macro VAR_MACRO is defined in head1.h

  ...     //other members and functions
};
若相互包含,则有可能出现 未定义的情况。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值