为什么我不能在afx(MFC)项目中包含windows.h?
答案 0 :(得分:11)
通常,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
{1}}你自己 - afxv_w32.h
已经包含它。
答案 1 :(得分:2)
因为在MFC中你不应该直接使用它。 AFAIR你应该包括afx.h,反过来间接地包括windows.h。
答案 2 :(得分:0)
您可以包含windows.h
;但您需要先包含 afx.h
(或类似的)。如果出现错误:“MFC 应用程序不得#include afx.h
之后包含类似 windows.h
的内容。
如果不确定它是如何被包含的,您可能需要开启“显示包含”。