} __attribute ((packed)); 最后一个成员为可变长的数组,对于TLV(Type-Length-Value)形式的结构,或者其他需要变长度的结构体,用这种方式定义最好。使用起来非常方便,创建时,malloc一段结构体大小加上可变长数据长度的空间给它,可变长部分可按数组的方式访问,释放时,直接把整个结构体free掉就可以了。例子如下: st...
c结构体中的变长数组 c结构体中的变长数组 在Linux系统⾥,/usr/include/linux/if_pppox.h⾥⾯有这样⼀个结构:struct pppoe_tag { __u16 tag_type;__u16 tag_len;char tag_data[0];} __attribute ((packed));最后⼀个成员为可变长的数组,对于TLV(Type-Length-Value)形式的结构,或者其他...
这种情况在实际中并不会出现,如果只有一个成员,就没必要多一层结构体。 2.3 变长数组置前复现 typedefstruct{charbody[];inta; }msg_t; 变长数组body[]不为结构最后一个成员。编译错误如下: test.c:7:10: error: flexiblearraymember not at end ofstructcharbody[]; 这种情况就是按照C99标准变长数组必须...