7

afx(MFC)プロジェクトにwindows.hを含めることができないのはなぜですか?

4

3 に答える 3

12

通常、MFCアプリケーションコードにはまたはが含まれますafx.hafxwin.h後者には前者が含まれます)。の最初の2行windows.h

#ifndef _WINDOWS_
#define _WINDOWS_

これは_WINDOWS_、このヘッダーが含まれている場合に定義されることを意味します。 includeとこのヘッダーincludesAfx.hには、次のコードが含まれています。afxver_.hafxv_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ます。

于 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です。

どのようにインクルードされたかわからない場合は、「showincludes」をオンにする必要があるかもしれません。

于 2021-07-06T20:40:09.667 に答える