((u8_t *)addr)[0]
%02x
((struct uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN])
static struct uip_udp_conn *server_conn
((char *)uip_appdata)[uip_datalen()] = 0;
PRINT6ADDR(&UDP_IP_BUF->srcipaddr);
state = uip_ds6_if.addr_list[i].state;
我需要用简单的英语解释上面的C行。
答案 0 :(得分:2)
非常简短:
((u8_t *)addr)[0]
addr
的第一个八位字节。
%02x
这是printf
系列函数的格式字符串。它将打印填充为2位数的十六进制数字(例如5c
)。
((struct uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN])
距内容struct uip_udpip_hdr
偏移UIP_LLH_LEN
的{{1}}。
uip_buf
指向static struct uip_udp_conn *server_conn
的静态指针,名为struct uip_udp_conn
。
server_conn
将char ((char *)uip_appdata)[uip_datalen()] = 0;
(以字符为单位)的char设置为uip_datalen()
为0.我猜这应该设置一个空终止符。
uip_appdata
我猜这会打印PRINT6ADDR(&UDP_IP_BUF->srcipaddr);
中包含的IPv6地址("源IP地址")。
UDP_IP_BUF->srcipaddr
将state = uip_ds6_if.addr_list[i].state;
分配给uip_ds6_if.addr_list[i].state
。 : - )