gpt4 book ai didi

c - 强制 C 中的特定结构大小

转载 作者:IT王子 更新时间:2023-10-28 23:35:15 26 4
gpt4 key购买 nike

出于各种原因,我想强制一些结构为特定大小(在本例中为 64 字节和 512 字节)。然而,两者都低于我想要的尺寸。

我是否可以告诉编译器将它们设置为这些特定的大小并用零填充,或者我最好在结构内声明一个数组来构成多余的空间,以便它与大小对齐我要吗?

最佳答案

您可以使用 union 。

struct mystruct_s {
... /* who knows how long */
};

typedef union {
struct mystruct_s s;
unsigned char padding[512];
} mystruct;

这将确保 union 为 512 字节或更多。然后,您可以在代码中的某处使用静态断言来确保它不超过 512 个字节:

/* Causes a compiler error if sizeof(mystruct) != 512 */
char array[sizeof(mystruct) != 512 ? -1 : 1];

如果您使用的是 C11,则有更好的方法来执行此操作。我还不认识任何使用 C11 的人。该标准是在几周前发布的。

_Static_assert(sizeof(mystruct) == 512, "mystruct must be 512 bytes");

请注意,用 zeroes 填充的唯一方法是手动将零放在那里(callocmemset)。编译器会忽略填充字节。

关于c - 强制 C 中的特定结构大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8705665/

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