【发布时间】:2011-05-31 15:41:55
【问题描述】:
我正在使用 Visual Studio 2008 为 Windows XP/Vista/7 编写 C++ 应用程序。我的一些结构使用位域,如示例所示。
typedef struct myStruct_tag
{
BYTE myVar1;
WORD myVar2;
WORD myVar3;
union
{
struct
{
BYTE :1;
BYTE field1 :1;
BYTE field2 :1;
BYTE reserved :5;
} myBitField;
BYTE myVar4;
};
BYTE myVar5;
BYTE myVar6;
} myStruct_t;
字段的哪一端是最高有效位?
【问题讨论】:
-
注:根据标准,MSB没有定义。在您的特定平台上,我怀疑
reserved包含 MSB,但我不肯定。 -
@Billy:这看起来像是对我的回答。
-
呃...这是一个相当奇怪的问题。您的声明中只有 3 位字段。其中 2 个是 1 位位域,即它们不存在“哪一端”的问题,因为那里只有 1 位。唯一的多位位域称为
reserved,这表明它根本没有被使用。因此,基本上,您可以申请的唯一位域是reserved。你是在问reserved吗?如果不是,请澄清您的问题。 -
@Ben:如果我是积极的 w.r.t.哪个变量会得到 MSB 这本来是一个答案,但我不肯定......
-
这很重要,因为该结构用于定义串行通信的数据包。位域需要在系统的两侧对齐,不幸的是我只能控制一侧。
标签: c windows visual-studio-2008 bit-fields