“->”结构的 C 无效类型参数

C invalid type argument of "->" Structs

我有一个结构是这样的:

#define REQUEST_SIZE_BITS 16
#define HID_SIZE_BITS 32
#define BLOCK_SIZE_BITS 16
#define FID_SIZE_BITS 32
typedef struct __attribute__((__packed__)) footer {
    uint64_t     block_size : BLOCK_SIZE_BITS;
    uint64_t            fid : FID_SIZE_BITS;
    uint64_t requested_size : REQUEST_SIZE_BITS;
} footer;

但是当我创建这个结构的实例时

footer prologue;
prologue->block_size = 16;

编译器说 Invalid type argument of "->" 为什么会这样?

我应该使用

prologue.block_size = 16;

而不是使用 prologue->block_size?

此外,

block_size : BLOCK_SIZE_BITS;

我们在定义这个结构体的时候做什么?是否为其分配默认值?

-> 运算符用于通过指向结构 的 指针访问结构成员。当你有一个结构的实例时,你可以使用 . 运算符。

所以如果你有这个:

footer f;
footer *p = &f;

你会用这个:

f.block_size = 16;
p->block_size = 16;