【问题标题】:c - struct - what does the additional ": 1" doing? [duplicate]c - struct - 额外的“:1”在做什么? [复制]
【发布时间】:2014-11-25 09:12:22
【问题描述】:

以下代码中的“: 1”部分是做什么的?

代码:

struct trace_key {
        const char * const key;
        int fd; 
        unsigned int initialized : 1;
        unsigned int  need_close : 1;
};

【问题讨论】:

  • 这意味着您应该查阅文档。
  • C 编程参考Bitfields
  • @leppie 如果我知道这意味着我可以做 google,我会问因为我不知道要搜索哪个关键字来寻求帮助,我已经阅读了 但没有非常注意这个功能。

标签: c struct


【解决方案1】:

这是一个bit field in C

这些天您可能不想过多使用它们(因为访问位字段的成本很高,而且内存增益通常可以忽略不计,除非您的内存中有数以百万计的struct trace_key)。在您的情况下,您最好编写代码:

struct trace_key {
    const char * const key;
    int fd; 
    bool initialized;
    bool need_close;
};

添加#include <stdbool.h> 后(假设C99 或更好)

顺便说一句,在我的机器上,sizeof(struct trace_key) 与位字段或bool 在特定情况下相同(因为struct trace_key 必须是字对齐的,并且结尾填充大于@987654329 @)

【讨论】:

  • 谢谢,我会用谷歌搜索一下。
  • 您还应该进行实验和基准测试。
  • 好的,看到git源码trace.h的代码,试试看源码学习c编程,谢谢。
  • C bool!
  • 好的,但我们是在 2014 年。谁在乎 pre99 C 标准?
猜你喜欢
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
  • 2013-03-10
相关资源
最近更新 更多