首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初始化常量GUID * (GUID指针)

初始化常量GUID * (GUID指针)
EN

Stack Overflow用户
提问于 2012-01-31 02:02:56
回答 1查看 522关注 0票数 0

我正在尝试将GUID指针初始化为空值以便与DirectX一起使用...我正在编写一个.X文件解析器。

初始化GUID指针时遇到问题!我需要将来自文件的输入GUID类型与内部定义的模板类型进行比较,以便告诉我的程序如何处理“来自文件的模板”中的信息。

这是我到目前为止所知道的:

代码语言:javascript
复制
BOOL cXMeshParser::ParseObject(LPD3DXFILEDATA pDataObj, DWORD Depth, void **data)
{

    if(pDataObj->IsReference())
        return true;

    GUID pTemplateGUID;
    memset(&pTemplateGUID, 0, sizeof(GUID));

    GUID *pCpyGUID;
    memset(&pCpyGUID, 0, sizeof(GUID));

    memcpy(&pCpyGUID, &pTemplateGUID, sizeof(GUID));

    pDataObj->GetType(pCpyGUID);
    int isEqual =0;
    isEqual = IsEqualGUID(*pCpyGUID, TID_D3DRMMesh);
    if(isEqual){

           ...
         }
}

当我运行调试器时,pCpyGUID中的数据不正确(非NULL)

我使用了一个常规的GUID定义( GUID pTemplateGUID)来尝试将GUID复制到const GUID* (我能够初始化GUID ...非GUID*)...the解析器当前的问题是无法评估模板数据和内部定义之间的比较...

我的问题是:

如何为常量GUID*编写有效的初始化?

EN

回答 1

Stack Overflow用户

发布于 2012-01-31 02:15:21

pCpyGUID只是一个指针,这意味着它的值是一个地址。因为您没有初始化这个地址,所以它指向某个随机的内存位置,该位置可能是不可读和不可写的。

在任何情况下,您也可以将pTemplateGUID置零,然后尝试将其复制到pCpyGUID...

看起来你不需要同时使用pTemplateGUID和pCpyGUID。

你可能想要这样做:

代码语言:javascript
复制
GUID *pCpyGUID = &pTemplateGUID;

所以pCpyGUID指向了pTemplateGUID。但你不需要这个。

试试这个:

代码语言:javascript
复制
GUID templateGUID;

pDataObj->GetType(&templateGUID);
int isEqual = IsEqualGUID(templateGUID, TID_D3DRMMesh);
if(isEqual){
 ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9068489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档