有人可以向我解释下面两行应该做什么:
s.httpheaderline[s.httpheaderlineptr] = *(char *)uip_appdata;
++((char *)uip_appdata);
这取自微控制器的uIP代码。
s - 结构
httpheaderline - http包呈现为字符串
httpheadrlineptr - 整数值
uip_appdata - 收到以太网数据包(字符串)
如果需要更多信息,请告诉我们。
顺便说一句。 Eclipse在第二行报告错误,消息增量无效左值,所以我试图弄清楚如何解决这个问题。
答案 0 :(得分:2)
第一行背后的意图是抓取uip_appdata
指向的字符:
*(char *)uip_appdata
将uip_appdata
转换为char*
,然后取消引用它,从而获取第一个字符。
第二行尝试增加uip_appdata
。问题是,它没有正确地执行,因为演员的结果不能“就地”增加。
这是一种有效的方法:
char *tmp = uip_appdata;
uip_appdata = ++tmp;
使用此代码片段,编译器可以在平台需要时处理指针类型之间的转换。
以下是关于ideone的demo of this concept。