#include循环依赖错误

时间:2013-07-27 16:39:02

标签: c++ visual-studio-2010 header-files

我有这样的代码结构:

resource.h中:

#include"a.h"
#include"b.h"
#include"c.h"

A.H:

#ifndef __A__
#define __A__
#include"resource.h"
class B;
class A{
//something uses B
};
#endif

b.h:

#ifndef __B__
#define __B__
#include"resource.h"
class A;
class B{
//something uses A
}
#endif

c.h:

#ifndef __C__
#define __C__
#include"resource.h"
class A;
class B;
class C{
//something uses A and B
};
#endif

问题如下:VS2010告诉我在c.h中,行 #include“resource.h”会导致“resource.h”包含其自身。

但是,代码能够按预期编译和执行。所以我想知道在VS中导致这个错误intellisense的原因是什么,无论如何都要删除它。

P.S:我正在使用VS进行编译,并且没有编译错误。

3 个答案:

答案 0 :(得分:0)

您可以使用#pragma once预处理器使resource.h在编译时只包含一次。

答案 1 :(得分:0)

c.h包含resource.h,其中包含a.hb.h,其中每个都包含resource.h

答案 2 :(得分:0)

您正在创建循环依赖项。 在resource.h中,你包含了a.h,b.h和c.h,这些都不是必需的。 类文件需要资源,资源文件不需要类信息。