bool active:1; 这种用法

dedlous 2017-09-21 03:04:56
struct wakeup_source {
const char *name;
struct list_head entry;
spinlock_t lock;
struct timer_list timer;
unsigned long timer_expires;
ktime_t total_time;
ktime_t max_time;
ktime_t last_time;
ktime_t start_prevent_time;
ktime_t prevent_sleep_time;
unsigned long event_count;
unsigned long active_count;
unsigned long relax_count;
unsigned long expire_count;
unsigned long wakeup_count;
bool active:1;
bool autosleep_enabled:1;
};
中的
bool active:1;
bool autosleep_enabled:1;
是什么意思呢?好像很少看到这种用法,
谢谢
...全文
430 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
danix800 2017-09-24
  • 打赏
  • 举报
回复
参见Bit_field
Hello Worm 2017-09-21
  • 打赏
  • 举报
回复
在不少编译系统中bool起始是unsigned char,所以bool active:1就类似于unsigned char active:1,而这个用法是嵌入式中非常常见的,意思就是在一个8位的字节中,这个active变量只占其中的一位,相应的,后面bool autosleep_enabled:1;也就是占掉了另外一位。这种做法一方面节省空间,另一方面可以用变量来进行位操作,非常便利。

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧