C++ 中的 10 位或 12 位字段数据类型

1 c++ variables abstract-data-type

是否可以在 C++ 中使用 type-def(如 10 位或 12 位)来定义一些奇数大小的数据类型而不是标准类型?

vso*_*tco 5

您可以为此使用位域:

struct bit_field
{
    unsigned x: 10; // 10 bits
};
Run Code Online (Sandbox Code Playgroud)

并像使用它一样

bit_field b;
b.x = 15;
Run Code Online (Sandbox Code Playgroud)

例子:

#include <iostream>

struct bit_field
{
    unsigned x: 10; // 10 bits
};

int main()
{
    bit_field b;
    b.x = 1023;
    std::cout << b.x << std::endl;
    b.x = 1024; // now we overflow our 10 bits
    std::cout << b.x << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

AFAIK,没有办法在 a 之外有一个位域struct,即

unsigned x: 10; 
Run Code Online (Sandbox Code Playgroud)

本身是无效的。