【问题标题】:typedef puzzled in c [duplicate]typedef在c中感到困惑[重复]
【发布时间】:2012-09-12 07:16:07
【问题描述】:

可能重复:
Bitfield manipulation in C

我看到了一些c代码,typedef一个struct,比如

typedef struct
{
    unsigned a:1;
    unsigned b:1;
    unsigned c:1;
    unsigned rest:13;

} Interface_type;

unsigned a:1; 是什么意思?

【问题讨论】:

  • 称为位域。

标签: c


【解决方案1】:
unsigned a:1

定义一个只占用 1 位的位域。

请看这里:http://en.wikipedia.org/wiki/Bit_field

【讨论】:

  • 非常感谢...我从不使用位域...如果位字段比位掩码更好?我认为移植时可能会出现问题?
  • 我不确定是否要移植它——我猜可能出错的地方取决于该目标平台的编译器。
  • 位域对于移植来说是可怕的。该标准确实指定了布局,因此它是特定于编译器的。真的应该远离它们,并使用掩码来实现便携性。
  • @James,是的,我同意你的看法
【解决方案2】:

有符号变量,例如有符号整数,将允许您表示正数和负数范围内的数字。

无符号变量,例如无符号整数,只允许您以正数表示数字

【讨论】:

  • 谢谢,我知道有符号或无符号,我的意思是int a:1; 是什么意思,冒号
  • 我不确定,但我认为它指定了整数位字段的大小..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多