我有这样的代码结构:
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进行编译,并且没有编译错误。
答案 0 :(得分:0)
您可以使用#pragma once
预处理器使resource.h在编译时只包含一次。
答案 1 :(得分:0)
c.h
包含resource.h
,其中包含a.h
和b.h
,其中每个都包含resource.h
。
答案 2 :(得分:0)
您正在创建循环依赖项。 在resource.h中,你包含了a.h,b.h和c.h,这些都不是必需的。 类文件需要资源,资源文件不需要类信息。