gpt4 book ai didi

c - 如何使用带位域的结构

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:38 24 4
gpt4 key购买 nike

我正在使用具有以下结构的多个程序员共享的文件:

typedef struct _APPLE{
ULONG appleID;
struct{
ULONG isBig: 1;
ULONG isRed: 1;
ULONG isFresh: 1;
ULONG isGood: 1;
ULONG bReserved: 28;
};
}APPLE;

由于文件是共享的,我无法编辑它。我想在我的代码中使用这个 APPLE 结构,并想为它的每个成员提供值。我该怎么做?

最佳答案

首先你不能在标准 C 中有匿名嵌套结构,它是一些编译器使用的扩展。

所以你必须命名你的位域结构:

typedef struct _APPLE{
ULONG appleID;
struct{
ULONG isBig: 1;
ULONG isRed: 1;
ULONG isFresh: 1;
ULONG isGood: 1;
ULONG bReserved: 28;
} flags;
}APPLE;

然后只需使用普通的点符号来访问字段:

APPLE apple;
apple.appleID = 5;
apple.flags.isBig = 1;
apple.flags.isRed = 0;

虽然位域的多个成员可能共享相同的 int,但它们仍然彼此分离。因此,更改位域的一个成员不会更改任何其他成员。

关于c - 如何使用带位域的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20137807/

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