在小型iot设备中比如做排插这些简单的共更能可以用位域,好处在于
- iot设备本来就资源紧张,尤其加入其他云端数据的上传,调用底层,资源更加紧张
- 代码的思路看起来很清晰有友好的阅读性
#include <stdio.h>
typedef struct app_contr{
unsigned char plug1:1; //继电器1 0关1开
unsigned char plug2:1; //继电器2 0关1开
unsigned char netLamp:1; //网灯 0关1开
unsigned char deskLamp:1; //台灯 0关1开
unsigned char :4; //占位不用
}appCON;
int main()
{
printf("%ld\n",sizeof(appCON));
appCON app;
//如果下面赋值不是0或者1 你会发现这样的提示:
/*
* warning: large integer implicitly truncated to unsigned type [-Woverflow]
* app.plug1 = 2;
*/
app.plug1 = 1;
//下面可以进行上传云端数据等操作
printf("app.plug1 = %d\n",app.plug1);
return 0;
}
可以发现结构体占用了1字节但是却完成了4个功能,当然这里只是举例说明,比较适合这种功能相对简单的项目