作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
例如我有这种格式的结构
typedef struct{
tMY_STRUCT2 my_struct2;
u16 item1;
u8 item2[20];
u32 item3;
}tMY_STRUCT;
我怎样才能通过这个结构?因为 alignment 它不是那么容易,我不能只计算从结构开始的偏移量 SIZEOF(item)。
有什么办法吗?
原因:我需要启动大型结构,有一些条件,所以我需要在 FOR 循环中进行。
最佳答案
不要这样做。结构的要点是您不能统一处理它的数据项。结构之于异构数据就像数组之于同类数据。
在代码中一次初始化每个字段或将整个结构初始化为零。这些是唯一的良好实践选择。对齐尤其取决于机器体系结构、编译器等。因此,如果您对代码进行看似微不足道的更改,例如重新排序声明中的字段,或在不同的操作系统上运行或在其他地方编译,则使用此方法的方法可能会失败.
选项:
memset(mystruct, 0, sizeof(mystruct));
或者(我认为这是 C99)mystruct_t foo = {0};
或者只是初始化每个字段。
关于c - 如何遍历结构中的所有项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11036486/
我是一名优秀的程序员,十分优秀!