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

//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
};
若相互包含,则有可能出现 未定义的情况。




猜你喜欢

转载自blog.csdn.net/xmzzy2012/article/details/79351562