C结构中的代码片段uint8_t:5这是什么意思?

时间:2014-10-24 20:21:11

标签: c operators

我正在测试一些代码,并且我试图了解结构的作用。代码如下

typedef struct
{
  uint8_t      :5;
  uint8_t Index:3;
} foo;

我搜索了一会儿,无法找到答案。什么:"运营商"做什么以及5和3的重要性是什么?

3 个答案:

答案 0 :(得分:1)

那不是运营商。这是C的'位字段'语法。这里的第一个未命名变量是5位,后跟'Index',即3位。

请参阅Wikipedia

答案 1 :(得分:0)

它有点领域。冒号后面的数字是每个变量占用多少内存。有很多答案可以在SO上提供更多关于此的信息 -

":" (colon) in C struct - what does it mean?

答案 2 :(得分:0)

  

C结构中的代码片段uint8_t:5这是什么意思?

未命名的位字段用于在相邻的位字段成员之间提供填充。这里在3位Index位字段之前有一个5位填充。