查阅数十本C的参考书也没找到好的招。
uint8 i,u1,*up,*sp;
kn = Prtl_Ctr.P05.User.us_DA; // 测量点类型 up = Prtl_Ctr.P05.User.us_dat; // 数据缓冲 sp = NULL;
switch(kn) { case ID_Mp_AC: // 交采表 sp = (uint8*)(&sDatMp.sAC[kn].sEnergy.sP_0.ucSum); // A处 break; case ID_Mp_Mul: // 多功能表 sp = (uint8*)(&sDatMp.sMulMeter[kn].sEnergy.sP_0.ucSum); break; default: break; } if(sp != NULL) // 有数据复制 { for(i=0; i<4; i++) { memcpy(up, sp, 3); // B处 up = up + 3; } }
改成如下编译都出错: sp = (uint8*)(&sDatMp.sAC[kn]);
memcpy(up, sp.sEnergy.sP_0.ucSum, 3); memcpy(up, sp->sEnergy.sP_0.ucSum, 3);
|