gpt4 book ai didi

c - 在 GNU GCC 中使用 __attribute__((__packed__)) 进行结构打包

转载 作者:行者123 更新时间:2023-12-03 23:15:10 31 4
gpt4 key购买 nike

我们知道_attribute__((__packed__))意味着(很可能)“不插入任何填充以使事情更快”,也可能意味着“不插入任何对齐以保持对齐”。

struct structure2
{
int id1 __attribute__((__packed__));
char name __attribute__((__packed__));
int id2 __attribute__((__packed__));
char c __attribute__((__packed__));
float percentage __attribute__((__packed__));
};
struct structure2 b;
printf(" \n\nsize of structure2 in bytes : %d\n", sizeof(b));// output = 20

为什么没有删除所有填充(输出 = 14)?

最佳答案

尝试:

struct __attribute__((__packed__)) structure2
{ // ^^^^^^^^^^^^^^^^^^^^^^^^^^^
int id1;
char name;
int id2;
char c;
float percentage;
};

打包一个字段是没有意义的。正如你自己所说,padding 是关于字段之间的关系,所以属性属于结构本身,而不是它的字段。

关于c - 在 GNU GCC 中使用 __attribute__((__packed__)) 进行结构打包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34588059/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com