关于位带操作的写法问题
如果将字节按位带拆分是没问题的,如下

1 typedef union 2 { 3 unsigned char byte; 4 struct 5 { 6 unsigned char bit0:1; 7 unsigned char bit1:1; 8 unsigned char bit2:1; 9 unsigned char bit3:1; 10 unsigned char bit4:1; 11 unsigned char bit5:1; 12 unsigned char bit6:1; 13 unsigned char bit7:1; 14 }Bits; 15 }strbits_TypeDef;
但如果是16位的short数据进行拆分以下编译通不过的:

1 typedef unsigned short int u16; 2 3 Typedef union 4 { 5 u16 Data16; 6 7 struct 8 { // 低字节低位,低字节高位,高字节低位,高字节高位 9 u16 bit0:1; // 10 u16 bit1:1; // 11 u16 bit2:1; // 12 u16 bit3:1; // 13 u16 bit4:1; // 14 u16 bit5:1; // 15 u16 bit6:1; // 16 u16 bit7:1; // 17 u16 bit8:1; // 18 u16 bit9:1; // 19 u16 bit10:1; // 20 u16 bit11:1; // 21 u16 bit12:1; // 22 u16 bit13:1; // 23 u16 bit14:1; // 24 u16 bit15:1;// 25 }Bits; 26 }REG16_TypeDef;
但是可以用下面写法就没问题:

1 typedef union 2 { 3 unsigned short int Data16; 4 struct 5 { 6 unsigned char bit0:1; 7 unsigned char bit1:1; 8 unsigned char bit2:1; 9 unsigned char bit3:1; 10 unsigned char bit4:1; 11 unsigned char bit5:1; 12 unsigned char bit6:1; 13 unsigned char bit7:1; 14 unsigned char bit8:1; 15 unsigned char bit9:1; 16 unsigned char bit10:1; 17 unsigned char bit11:1; 18 unsigned char bit12:1; 19 unsigned char bit13:1; 20 unsigned char bit14:1; 21 unsigned char bit15:1; 22 }Bits; 23 }strbits_TypeDef2;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2015-05-21 AD按键-矩阵按键-独立按键: