需要解释函数和指针

时间:2015-03-15 09:24:56

标签: c

  • ((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行。

1 个答案:

答案 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。 : - )