“->”结构的 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;
我有一个结构是这样的:
#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;