求教

在贵司的CH375芯片测试的程序中有下面语句:

CH375_WR_CMD_PORT( CMD_WR_USB_DATA7 ); // 向USB端点2的发送缓冲区写入数据块 cnt = udp.up.mLength + [u](UINT8)( & ( (USB_UP_PKT *)0 ) -> mBuffer[/u] ); CH375_WR_DAT_PORT( cnt ); // 写入后续数据长度 buf = [u]((PUINT8)&udp.up[u]; // 指向状态包缓冲区

本人水平有限,不能理解上面带下划线语句的意思。 请指点迷津 谢谢

上传的应答包是总是由一个固定格式的头部结构和一个变长的缓冲区构成。 第一个下划线是指 固定格式的头部结构的长度,所以之和 cnt 是整个应答包的总长度。 第二个下划线是指 应答包的起始地址, 这样才能从头到尾将整个包写到CH375中再上传。 C语言指针/结构/类型转换比较复杂,这样做目的是为了能够了解原理。 例如其中(UINT8)和(PUINT8)是可选的, 是为了避免编译出现警告。


我用的是ICC AVR编译器,芯片用的是ATmega8, 编译时出现以下提示: C:\icc\bin\imakew -f jhh.mak iccavr -c -IC:\icc\include\ -e -l -g -Mavr_enhanced_small -Wa-W C:\diaplay\display.c !W C:\diaplay\display.c(360):[warning] conversion from `pointer to array 32 of unsigned char' to `unsigned char' is undefined !W C:\diaplay\display.c(362):[warning] conversion from `pointer to struct _USB_UP_PACKET' to `unsigned char' is undefined !E C:\diaplay\display.c(362): operands of = have illegal types `pointer to unsigned char' and `unsigned char' C:\icc\bin\imakew.exe: Error code 1 Done: there are error(s). Exit code: 1

这些提示所指位置正是上述下划线语句中。 请问应如何处理?


只有登录才能回复,可以选择微信账号登录