【问题标题】:windows.h and MFCwindows.h 和 MFC
【发布时间】:2011-02-17 08:55:00
【问题描述】:

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

【问题讨论】:

    标签: c++ mfc afx


    【解决方案1】:

    通常,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>
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        您可以包含windows.h;但您需要首先包含afx.h(或类似名称)。如果您收到错误消息:“MFC 应用程序不得#include ”;它来自于在包含windows.h 之后包含afx.h 之类的内容。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-10-10
          • 2014-03-10
          • 2012-11-07
          • 2013-05-09
          • 1970-01-01
          • 1970-01-01
          • 2010-12-27
          相关资源
          最近更新 更多