c - “->”结构的 C 类型参数无效
问题描述
我有一个结构是这样的:
#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;
当我们定义这个结构的时候呢?它是否为其分配了默认值?
解决方案
->
运算符用于通过指向 struct 的指针访问struct成员。当你有一个结构的实例时,你可以使用.
运算符。
所以如果你有这个:
footer f;
footer *p = &f;
你会用这个:
f.block_size = 16;
p->block_size = 16;
推荐阅读
- azure - 如何将逻辑应用参数值与电子邮件连接器中的表达式连接起来?
- javascript - 如何在 javascript 画布上通过鼠标接近来反转圆圈的方向?
- javascript - 按钮单击事件在 Jquery 中不起作用
- javascript - 使用 try/catch 来验证 JSON?
- node.js - 如何在节点后端正确使用异步数据库操作
- javascript - 带有 SPA 的 Headless/Decoupled CMS 的管理面板
- r - 在 Rmarkdown pdf 输出中添加 Leaflet 的静态视图
- go - 如何等待第一个完成的 goroutine
- react-native - Redux Persist 状态在 rehydration 后为空
- java - 是否有键盘快捷键可以在项目窗口中选择特定模块?