我目前正在修改一个转储程序,但我不知道如何使用void指针正确导航。下面是我正在使用的函数,以及我试图执行的指令。我试过将mem转换成struct,但我不确定sytnax是否正确,我一直收到一个错误。对于下面的代码,我得到的具体错误是:

       47       |   mem = mem->tcbtio
===========> .........a..............................................
*=ERROR===========> a - CCN3122 Expecting pointer to struct or union.

以下是我的功能:
void hexdump(void *mem, unsigned int len)
{
   mem = mem->tcbtio;
   ...
}

以下是我的结构定义:
struct psa {
 char psastuff[540];
 struct tcb *psatold;
        char filler[4];
 struct ascb *psaaold;

};

struct tcb {
 struct prb *tcbrb;
 char tcbstuff[8];
 struct tiot *tcbtio;
};

struct tiot {
 char tiocnjob[8];
 char tiocpstn[8];
 char tiocjstn[8];
};

我需要保持它作为一个空指针,因为我需要将它转换为char和int,稍后在函数中。

最佳答案

似乎您希望找到一个tcb结构,从mem所指向的地址开始,但是代码的目的很模糊,问题也不清楚。
如果确实如此,您可以尝试:

   mem = ((struct tcb *)mem)->tcbtio;

10-07 19:22
查看更多