无法理解此statemnet的语法“ struct sll_header * shdr =(struct sll_header *)buf;”

问题描述 投票:0回答:1

下面是我试图阅读的代码段。

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;
    }
c pointers character structure
1个回答
0
投票

这是一个简单的类型转换。 buf最初作为u_char的指针传递给函数,但是在函数内部需要使用buf并将其作为sll_header结构的指针进行检查/操纵。

这是很常见的,当以原始字节序列获取缓冲区时,可能是从介质或网络中读取了缓冲区,然后将其传递给一个函数,该函数可以理解其表示的底层结构(例如IP数据包)并具有以下意义:它。

没有类型的情况下,您将收到编译器警告。

© www.soinside.com 2019 - 2024. All rights reserved.