下面是我试图阅读的代码段。
swap_linux_sll_header(const struct pcap_pkthdr *hdr, u_char *buf)
{
u_int caplen = hdr->caplen;
u_int length = hdr->len;
struct sll_header *shdr = (struct sll_header *)buf;
uint16_t protocol;
pcap_can_socketcan_hdr *chdr;
if (caplen < (u_int) sizeof(struct sll_header) ||
length < (u_int) sizeof(struct sll_header)) {
/* Not enough data to have the protocol field */
return;
}
这是一个简单的类型转换。 buf最初作为u_char的指针传递给函数,但是在函数内部需要使用buf并将其作为sll_header结构的指针进行检查/操纵。
这是很常见的,当以原始字节序列获取缓冲区时,可能是从介质或网络中读取了缓冲区,然后将其传递给一个函数,该函数可以理解其表示的底层结构(例如IP数据包)并具有以下意义:它。
没有类型的情况下,您将收到编译器警告。