【发布时间】:2021-12-23 22:41:44
【问题描述】:
我有一个这样的结构:
#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;
当我们定义这个结构体的时候呢?是否为其分配了默认值?
【问题讨论】:
-
请刷新有关结构以及如何访问结构成员的教科书。 “箭头”运算符用于 指针 到结构。
-
prologue不是footer类型的指针。使用.运算符访问block_size-prologue.block_size。 -
对于
->操作员的问题很抱歉,我编辑了问题 -
请不要将 2 个完全不同的主题混入 1 个问题中。
-
如果您已经为 Q1 找到了解决方案,并且您的编译器在更改后可能不再抱怨,那么还有什么不清楚的地方?