atlbase.h(5853) : error C2664: 'memcmp' : cannot convert parameter 1 from 'const struct _GUID' to 'const void *'

tang 发布于 2011/10/27 11:35
阅读 1K+
收藏 0
ATL

//IsEqualGUID 定义在winddi.h中

#ifndef IsEqualGUID
    #define IsEqualGUID(guid1, guid2) \
        (!memcmp((guid1), (guid2), sizeof(GUID)))
#endif // !defined(IsEqualGUID)

 

//ATLINLINE ATLAPI AtlModuleRegisterServer定义在atlbase.h中

ATLINLINE ATLAPI AtlModuleRegisterServer(_ATL_MODULE* pM, BOOL bRegTypeLib, const CLSID* pCLSID)

{

....

if (!IsEqualGUID(*pCLSID, *pEntry->pclsid))   //报错-注释1

    continue;

}

问题:如何做到'const struct _GUID' 转 'const void *'?或是我的头文件包含的顺序错了?

          Help me!Thanks!

注释1:vc98\atl\include\atlbase.h(5853) : error C2664: 'memcmp' : cannot convert parameter 1 from 'const struct _GUID' to 'const void *'
        No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

加载中
0
bastetwang
bastetwang
if (!IsEqualGUID(pCLSID, pEntry->pclsid))
0
t
tang

在guiddef.h中有定义着这么一句:
__inline int IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
{
  return !memcmp(&rguid1, &rguid2, sizeof(GUID));
}

我开始以为我定义错了,我就修改成
if (!IsEqualGUID((void*)pCLSID, (void*)pEntry->pclsid))
也是报错的

这几段代码,分别是在atlbase.h,winddi.h,guiddef.h中,这是安装编程工具时自带的头文件把,为何里面的代码出现这种状况??

返回顶部
顶部