为什么我不能在 afx(MFC) 项目中包含 windows.h?
问问题
8428 次
3 回答
12
通常,MFC 应用程序代码包括afx.h
或afxwin.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 回答