前瞻性声明和包含

时间:2012-03-24 23:57:13

标签: c++ include forward-declaration

我正在使用前向声明并包含在一个小项目中。

但有时如果我创建了一个文件。

包括C和D的。

然后在B中包括A,C,D我有一些问题,我在其中添加了前瞻声明。

我注意到,有时我只需要前向声明,它发生的原因是我之前将它添加到我包含在前向声明文件中的文件中? 就像我只是在B中包含A一样,那么C和D也包括在内? 我有一个班级,我只需要添加前向声明。 像:

Class a;
Class b;
Class R{
}

然后文件a包含R,所以我不需要在R中包含a,如果我这样做了代码没有编译。它说类似于在{。

之前声明一个类

其他情况是:

前向声明B,但不包括B和B包括A ..它有效,我想它是因为编译器“粘贴”B中的A代码的时间,前向声明告诉编译器该类在那里在代码中。如果我使用ifdef / ifndef并在其中包含代码b崩溃,如果我删除包含它作为魅力^^

感谢。

2 个答案:

答案 0 :(得分:1)

除非您引入循环依赖项(可以使用前向声明进行细分),否则只需使用#ifndef / #endif对:

#ifndef _FILE_H_
#define _FILE_H_

/* ... header file specifications ... */

#endif /* _FILE_H_ */

答案 1 :(得分:-1)

我太累了,无法想到你所拥有的所有依赖关系,但请记住,#include只不过是将包含文件完全插入到#include的位置。这是递归完成的,直到所有#include指令都被扩展。

通过典型的

防止同一文件的多次插入也是很好的
#ifndef FILE_H
#define FILE_H
...
#endif