C语言编译出现问题:

#include nesting level is 363 deep; possible infinite recursion?

首先,要分别在两个文件中实现以下两个类

class Object

{

public:

NewType ToType();

};

class NewType : public Object

{

}

l 做法1

//在文件Object.h 中定义

#include "NewType.h"

class Object

{

public:

NewType ToType();

};

//在文件NewType.h 中定义

#include "Object.h"

class NewType : public Object

{

}

将产生错误:

"warning C4182: #include nesting level is 363 deep; possible infinite recursion"

"fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit"

原因是两个文件互相包含,导致包含的层次太深

l 做法2

//在文件Object.h 中定义

#include "NewType.h"

#ifndef _OBJECT_H

#define _OBJECT_H

class Object

{

public:

NewType ToType();

};

#endif

//在文件NewType.h 中定义

#include "Object.h"

#ifndef _NEWTYPE_H

#define _NEWTYPE_H

class NewType : public Object

{

}

#endif

错误依旧

l 做法3

//在文件Object.h 中定义

#ifndef _OBJECT_H

#define _OBJECT_H

#include "NewType.h"

class Object

{

public:

NewType ToType();

};

#endif

//在文件NewType.h 中定义

#include "Object.h"

#ifndef _NEWTYPE_H

#define _NEWTYPE_H

class NewType : public Object

{

}

#endif

产生错误:

"error C2504: 'Object' : base class undefined"

温馨提示:答案为网友推荐,仅供参考
相似回答