这是我网上搜的一段计算校验和的代码,为什么会提示非法的间接寻址?
unsigned short csum(unsigned char *addr, int count)
{
register long sum=0;
while(count >1)
{
sum+=*(unsigned short)addr++;
count-=2;
}
if (count>0)
sum+=*(unsigned char*)addr;
while(sum>>16)
sum=(sum & 0xffff)+(sum>>16);
return ~sum;
}
1>c:\documents and settings\administrator\桌面\test\test\testdlg.cpp(168) : error C2100: 非法的间接寻址
[解决办法]
IP校验和。
while(count >1)
{
sum+=*(unsigned short)addr++;
count-=2;
}
这一段明显错了,这是写了个毛,明明是把内存当做一堆short加和,这是写了个屁。
while (count > 1) {
sum += *(unsigned short*)addr;
addr += 2;
count -= 2;
}