关于结构数组初始化,这个数组有几个元素?每个被填入了什么值?讨厌的宏!(内详!)解决思路

关于结构数组初始化,这个数组有几个元素?每个被填入了什么值?讨厌的宏!(内详!)
struct   _ATL_OBJMAP_ENTRY
{
const   CLSID*   pclsid;
HRESULT   (WINAPI   *pfnUpdateRegistry)(BOOL   bRegister);
_ATL_CREATORFUNC*   pfnGetClassObject;
_ATL_CREATORFUNC*   pfnCreateInstance;
IUnknown*   pCF;
DWORD   dwRegister;
_ATL_DESCRIPTIONFUNC*   pfnGetObjectDescription;
_ATL_CATMAPFUNC*   pfnGetCategoryMap;
HRESULT   WINAPI   RevokeClassObject()
{
return   CoRevokeClassObject(dwRegister);
}
HRESULT   WINAPI   RegisterClassObject(DWORD   dwClsContext,   DWORD   dwFlags)
{
IUnknown*   p   =   NULL;
if   (pfnGetClassObject   ==   NULL)
return   S_OK;
HRESULT   hRes   =   pfnGetClassObject(pfnCreateInstance,   IID_IUnknown,   (LPVOID*)   &p);
if   (SUCCEEDED(hRes))
hRes   =   CoRegisterClassObject(*pclsid,   p,   dwClsContext,   dwFlags,   &dwRegister);
if   (p   !=   NULL)
p-> Release();
return   hRes;
}
void   (WINAPI   *pfnObjectMain)(bool   bStarting);
};

#define   BEGIN_OBJECT_MAP(x)   static   _ATL_OBJMAP_ENTRY   x[]   =   {
#define   END_OBJECT_MAP()       {NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL}};
#define   OBJECT_ENTRY(clsid,   class)   {&clsid,   class::UpdateRegistry,   class::_ClassFactoryCreatorClass::CreateInstance,   class::_CreatorClass::CreateInstance,   NULL,   0,   class::GetObjectDescription,   class::GetCategoryMap,   class::ObjectMain   },


BEGIN_OBJECT_MAP(ObjectMap)
OBJECT_ENTRY(CLSID_Math,   CMath)
END_OBJECT_MAP()

这时,ObjectMap数组有几个元素呢?每个分别被填入了什么值?

------解决方案--------------------
ATL?
2个元素
第一个CLSID_Math相关的,将OBJECT_ENTRY 展开就可以了
第二个元素内容是{NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}表示结尾