hur.cn - 华软网

 热门搜索

error C2440: “=”: 无法从“PUCHAR”转换为“ULONG”

  作者:未知    来源:网络    更新时间:2011/9/27
ULONG CHECKSUM=0;
PUCHAR * pSFrame;
for(int j=0;j<2;j++)
{
   CHECKSUM=CHECKSUM + pSFrame[j];
   if(CHECKSUM>0xFFFF)
     {CHECKSUM=CHECKSUM%0x10000;}
}
报错:
error C2440: “=”: 无法从“PUCHAR”转换为“ULONG”

奇怪的是在同一个文档里这个用法共有两处,这是第二处,第一处竟然能顺利编译和运行,添加这第二处后怎么连编译都过不了,请高手指点!
---华软 网友回答---
  CHECKSUM=CHECKSUM + (ULONG)pSFrame[j];

---华软网友回复---
嗯 可以 但是下面的又报错了
ULONG CHECKSUM=0;
PUCHAR * pSFrame
for(int j=0;j<2;j++)
{
 CHECKSUM=CHECKSUM + (ULONG)pSFrame[j];
 if(CHECKSUM>0xFFFF)
    { CHECKSUM=CHECKSUM%0x10000;}
}
pSFrame[0]=(unsigned char)(CHECKSUM/256);//这句报错
pSFrame[1]=(unsigned char)(CHECKSUM%256);

报错:
error C2440: “=”: 无法从“unsigned char”转换为“PUCHAR”

真是晕死,明明不用转换的,怎么会报这样的错误?
---华软网友回复---
pSFrame[0]=(unsigned char *)(&(CHECKSUM/256));//这句报错
---华软网友回复---
你确实不是
C++">PUCHAR pSFrame;
还是
C++">PUCHAR * pSFrame;
吗?
对于后者来说,pSFrame[0]是一个unsigned char *的类型,肯定会出现你上面的错误。
C++">CHECKSUM=CHECKSUM + (ULONG)pSFrame[j];
这句即便强制转化了,也可能与你的初衷不符吧。
---华软网友回复---
确定不是,而是~
打错字了没法编辑~
---华软网友回复---
PUCHAR *pSFrame;
的定义有误
应为
PUCHAR pSFrame;

检查下你的代码吧,或者搞混了。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。