我目前正在修改一个转储程序,但我不知道如何使用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;