afx(MFC)プロジェクトにwindows.hを含めることができないのはなぜですか?
3 に答える
通常、MFCアプリケーションコードにはまたはが含まれますafx.h(afxwin.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ます。
MFCでは、直接使用することは想定されていないためです。AFAIRでは、代わりにafx.hを含める必要があります。これにより、windows.hが適切な方法で間接的に含まれます。
含めることができますwindows.h; afx.hただし、最初に含める(または同様のもの)必要があります。エラーが発生した場合:「MFCアプリは#include<Windows.h>であってはなりません」; afx.hを含めた後のようなものを含めることからwindows.hです。
どのようにインクルードされたかわからない場合は、「showincludes」をオンにする必要があるかもしれません。