1

我对为什么会这样感到有些困惑,我敢肯定,如果我用 C++ 编程,这是我应该知道的基本事情,但问题是:

我有一个“Windows.cpp”,顶部包括

#include <windows.h>
#include "Game.h"
#include "Mouse.h"
#include "Screen.h"
...

在我的 Screen.h 中,由于使用了DWORD,我有以下显然需要来自 windows.h 的信息:

#pragma once

#include <windows.h>

class ScreenServer;

class ScreenClient
{
public:
    ScreenClient( const ScreenServer &server );

    DWORD GetScreenHeight();
    DWORD GetScreenWidth();
...

问题是,为什么我必须在 Screen.h 中 #include windows.h,而我的“Windows.cpp”在包含“Screen.h”之前已经包含它?

4

1 回答 1

4

简短的回答:

因为其他一些文件#include <windows.h>可能不包含Screen.h.

有点长:

一般来说,您应该始终包含您需要的标题,您需要它们的地方,而不是依赖它们被包含在其他地方。尽可能使用前向声明,但如果您需要完整类型,请包含标题。

于 2013-05-12T15:27:02.780 回答