7

为什么我不能在 afx(MFC) 项目中包含 windows.h?

4

3 回答 3

12

通常,MFC 应用程序代码包括afx.hafxwin.h(后者包括前者)。前两行windows.h

#ifndef _WINDOWS_
#define _WINDOWS_

这意味着_WINDOWS_如果包含此标头,则将其定义。 Afx.h包含afxver_.h并且此标头包含afxv_w32.h其中包含以下代码:

#ifdef _WINDOWS_
    #error WINDOWS.H already included. MFC apps must not #include <windows.h>
#endif
...
#include <windows.h>

因此,如果您windows.h在 MFC 头文件之前包含,您将在编译时生成此错误,并且如您所见,如果您包含afxwin.h您不需要包含windows.h自己 - 它已经包含在afxv_w32.h.

于 2011-02-17T09:33:08.210 回答
2

因为在 MFC 中你不应该直接使用它。AFAIR 你应该包含 afx.h ,这反过来又以正确的方式间接包含 windows.h 。

于 2011-02-17T08:57:30.067 回答
0

您可以包括windows.h;但您需要首先包含afx.h(或类似的)。如果您收到错误:“MFC 应用程序不得#include <Windows.h>”;afx.h它来自于包括之后的东西windows.h

如果不确定它是如何被包含的,您可能需要打开“显示包含”。

于 2021-07-06T20:40:09.667 回答