宣告和使用

struct FileAttributes
{
    unsigned int ReadOnly: 1;    
    unsigned int Hidden: 1;
};

這裡,這兩個欄位中的每一個將佔用記憶體中的 1 位。它由變數名後面的 : 1 表示式指定。位欄位的基本型別可以是任何整數型別(8 位 int 到 64 位 int)。建議使用 unsigned 型別,否則可能會出現意外情況。

如果需要更多位,則將 1 替換為所需的位數。例如:

struct Date
{
    unsigned int Year : 13; // 2^13 = 8192, enough for "year" representation for long time
    unsigned int Month: 4;  // 2^4 = 16, enough to represent 1-12 month values.
    unsigned int Day:   5;  // 32
};

整個結構只使用 22 位,並且通過正常的編譯器設定,sizeof 這個結構將是 4 個位元組。

用法非常簡單。只需宣告變數,並像普通結構一樣使用它。

Date d;

d.Year = 2016;
d.Month = 7;
d.Day =  22;

std::cout << "Year:" << d.Year << std::endl <<
        "Month:" << d.Month << std::endl <<
        "Day:" << d.Day << std::endl;