没有#includes的标题澄清

时间:2009-12-03 19:50:52

标签: c++ visual-studio header

当我找到这样的标题时,我正在阅读Doom 3 SDK中的一些代码(在VS解决方案中):

#ifndef __PLAYERICON_H__
#define __PLAYERICON_H__

    class idPlayerIcon {
        public:
            idPlayerIcon();
            ~idPlayerIcon();

        ...... // omitted

        public:
            playerIconType_t    iconType;
            renderEntity_t      renderEnt;
            qhandle_t       iconHandle;

        };

#endif  /* !_PLAYERICON_H_ */

标题没有前向类声明,也没有#includes所以,根据我的经验,它应该导致如下错误:未声明的标识符或语法错误,导致renderEntity_t和qhandle_t未被“看到”。 那怎么能正确编译呢? 提前感谢您的答案。

4 个答案:

答案 0 :(得分:4)

因为每次包含它,所需的实体都在它之前被声明/包含,所以一切都在包含点定义。正如你所说,它不会以任何其他方式运作。

答案 1 :(得分:3)

我猜他们在包含此标题之前会包含其他标题。

答案 2 :(得分:2)

由于这是一个头文件,因此很可能在其他地方(也就是使用这个文件的地方)有一个命令。只要renderEntity_t和qhandle_t在包含此文件之前将其放入符号表中就无所谓了。

答案 3 :(得分:1)

有没有叫做stdafx.h的东西?大多数VS项目都有这些。

它只是一个包含应用程序所需文件的标题,以减少包含标题的编译时间。

所以它会包含这样的内容:

#ifndef _STDAFX_H_
#define _STDAFX_H_

#include "playerIconAndOtherVariables.h"
#include "thatFileYouListed.h"

#endif