【发布时间】:2011-02-17 08:55:00
【问题描述】:
为什么我不能在 afx(MFC) 项目中包含 windows.h?
【问题讨论】:
为什么我不能在 afx(MFC) 项目中包含 windows.h?
【问题讨论】:
通常,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>
因此,如果您在 MFC 标头之前包含 windows.h,您将在编译时生成此错误,并且如您所见,如果您包含 afxwin.h,您不需要自己包含 windows.h - afxv_w32.h 已经包含了它。
【讨论】:
因为在 MFC 中您不应该直接使用它。 AFAIR 你应该包含 afx.h ,这反过来又以正确的方式间接包含 windows.h。
【讨论】:
您可以包含windows.h;但您需要首先包含afx.h(或类似名称)。如果您收到错误消息:“MFC 应用程序不得#include windows.h 之后包含afx.h 之类的内容。
如果不确定它是如何被包含的,您可能需要打开“显示包含”。
【讨论】: