首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结构成员初始化

结构成员初始化
EN

Stack Overflow用户
提问于 2011-04-06 17:02:06
回答 4查看 292关注 0票数 2

在阅读DirectWrite源代码时,我遇到了以下结构:

代码语言:javascript
复制
/// <summary>
/// Line breakpoint characteristics of a character.
/// </summary>
struct DWRITE_LINE_BREAKPOINT
{
    /// <summary>
    /// Breaking condition before the character.
    /// </summary>
    UINT8 breakConditionBefore  : 2;

    /// <summary>
    /// Breaking condition after the character.
    /// </summary>
    UINT8 breakConditionAfter   : 2;

    /// <summary>
    /// The character is some form of whitespace, which may be meaningful
    /// for justification.
    /// </summary>
    UINT8 isWhitespace          : 1;

    /// <summary>
    /// The character is a soft hyphen, often used to indicate hyphenation
    /// points inside words.
    /// </summary>
    UINT8 isSoftHyphen          : 1;

    UINT8 padding               : 2;
};

注意每个成员声明后奇怪的“:”。我将假设它是成员变量的默认初始化值。

我试着在谷歌上搜索确认,但不知道它的确切名称,我没有得到太多(大多数结果在哪里做的默认初始化)。

这项技术叫什么名字?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-06 17:04:23

注意每个成员声明后奇怪的“:”。我将假设它是成员变量的默认初始化值。

这不是默认初始化。这意味着breakConditionBefore只是2位整数,isWhitespace1位整数。诸若此类。

DWRITE_LINE_BREAKPOINT中,一个8位整数(即UINT8)被划分为5个成员,其中3个是2位整数,2个成员是1位整数。

阅读有关Bit-fields的信息

票数 5
EN

Stack Overflow用户

发布于 2011-04-06 17:05:26

不是,它不是默认的初始化列表,而是位字段。请参考http://en.wikipedia.org/wiki/Bit_field

票数 3
EN

Stack Overflow用户

发布于 2011-04-06 17:03:52

:2声明2位的成员。这称为位域。由于声明的位的总数加起来为8,所有位字段成员都是相邻的,并且它们的类型是UINT8,所以struct DWRITE_LINE_BREAKPOINT的大小是单字节。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5563861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档