相关疑难解决方法(0)

C++ 合并位域吗?

只是出于好奇,如果我有一个带有位字段的结构

struct Foo
{
    char a : 1;
    char b : 1;
    char c : 1;
}
Run Code Online (Sandbox Code Playgroud)

另一个带有位域和 struct Foo 的结构

struct Bar
{
    Foo foo;

    char a : 1;
    char b : 1;
    char c : 1;
}
Run Code Online (Sandbox Code Playgroud)

所有这些位都会被打包成一个整数吗?

在这种情况下,这些字段是否会被重新排序以形成单个位字段?

struct Baz
{
    char a : 1;

    int NotBitfield;

    char b : 1;
    char c : 1;
}
Run Code Online (Sandbox Code Playgroud)

c++ bit-fields

8
推荐指数
1
解决办法
184
查看次数

从c ++ struct字段获取单个字段的大小

简短版本是:如何学习c ++字段的单个字段的大小(以位为单位)?

澄清一下,我所谈论的领域的一个例子:

struct Test {
    unsigned field1 : 4;  // takes up 4 bits
    unsigned field2 : 8;  // 8 bits
    unsigned field3 : 1;  // 1 bit
    unsigned field4 : 3;  // 3 bits
    unsigned field5 : 16; // 16 more to make it a 32 bit struct

    int normal_member; // normal struct variable member, 4 bytes on my system
};

Test t;
t.field1 = 1;
t.field2 = 5;
// etc.
Run Code Online (Sandbox Code Playgroud)

我们只是说,要获得整个Test对象的大小很简单

sizeof(Test); // returns 8, for 8 …
Run Code Online (Sandbox Code Playgroud)

c++ struct field sizeof

3
推荐指数
2
解决办法
8298
查看次数

标签 统计

c++ ×2

bit-fields ×1

field ×1

sizeof ×1

struct ×1