首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-08 
关于结构数组初始化,这个数组有几个元素?每个被填入了什么值?讨厌的宏!(内详!)struct_ATL_OBJMAP_ENTRY{co

关于结构数组初始化,这个数组有几个元素?每个被填入了什么值?讨厌的宏!(内详!)
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}表示结尾

热点排行