如何分配1位值?

时间:2016-06-03 09:46:07

标签: c gcc variable-assignment literals bit-fields

在结构中读取pthread库,定义如下:

 struct ptw32_thread_t_
 {
      ....
      int implicit:1;
      ......
 };

据我所知,它只占用1位然后如何给它赋值,因为激活溢出错误标志编译的每个值都会给出错误:

 ptw32_thread_t *sp;
 sp = (ptw32_thread_t *) calloc (1, sizeof(ptw32_thread_t));
 sp->implicit = 1;

 error: overflow in implicit constant conversion [-Werror=overflow]

1 个答案:

答案 0 :(得分:6)

拥有1位int是一个坏主意,因为它是签名类型。使用签名后,您无法使用1位代表1,您只能代表0-1,这有点奇怪。

解决方案是使其成为unsigned int implicit : 1