afx(MFC)プロジェクトにwindows.hを含めることができないのはなぜですか?
3 に答える
通常、MFCアプリケーションコードにはまたはが含まれますafx.h
(afxwin.h
後者には前者が含まれます)。の最初の2行windows.h
は
#ifndef _WINDOWS_
#define _WINDOWS_
これは_WINDOWS_
、このヘッダーが含まれている場合に定義されることを意味します。
includeとこのヘッダーincludesAfx.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
を含めた後のようなものを含めることからwindows.h
です。
どのようにインクルードされたかわからない場合は、「showincludes」をオンにする必要があるかもしれません。