MSDN は、少なくとも他の2 つの場所でそれについて言及しています。
STDAFX.CPP、STDAFX.H : これらのファイルは、プリコンパイル済みヘッダー ファイル PROJNAME.PCH およびプリコンパイル済みタイプ ファイル STDAFX.OBJ を構築するために使用されます。
この説明では、プリコンパイル済みヘッダーとプリコンパイル済みタイプを明確に区別していません。MFC プロジェクトの典型的な stdafx.obj でdumpbinを実行すると、一連の静的ATL 型が含まれていることがわかります。その定義は、インクルード ツリーの奥深くに埋め込まれています。
...
COMDAT; sym= "struct ATL::IAtlAutoThreadModule * ATL::_pAtlAutoThreadModule" (?_pAtlAutoThreadModule@ATL@@3PEAUIAtlAutoThreadModule@1@EA)
COMDAT; sym= "public: static int const ATL::AtlLimits<int>::_Min" (?_Min@?$AtlLimits@H@ATL@@2HB)
COMDAT; sym= "public: static int const ATL::AtlLimits<int>::_Max" (?_Max@?$AtlLimits@H@ATL@@2HB)
COMDAT; sym= "public: static unsigned int const ATL::AtlLimits<unsigned int>::_Min" (?_Min@?$AtlLimits@I@ATL@@2IB)
COMDAT; sym= "private: static int (__cdecl* ATL::CNoUIAssertHook::s_pfnPrevHook)(int,char *,int *)" (?s_pfnPrevHook@CNoUIAssertHook@ATL@@0P6AHHPEADPEAH@ZEA)
COMDAT; sym= "public: static bool ATL::CAtlBaseModule::m_bInitFailed" (?m_bInitFailed@CAtlBaseModule@ATL@@2_NA)
COMDAT; sym= "public: static unsigned short const ATL::CVarTypeInfo<char>::VT" (?VT@?$CVarTypeInfo@D@ATL@@2GB)
COMDAT; sym= "public: static char tagVARIANT::* ATL::CVarTypeInfo<char>::pmField" (?pmField@?$CVarTypeInfo@D@ATL@@2QEQtagVARIANT@@DEQ3@)
COMDAT; sym= "public: static unsigned short const ATL::CVarTypeInfo<unsigned char>::VT" (?VT@?$CVarTypeInfo@E@ATL@@2GB)
...
pch で静的変数を定義する場合、それを配置する他の合理的な場所はありません。