c - 原因:#1546-D:(ULP 15.1)检测到连续位域分配。建议改用位掩码
问题描述
我正在使用 CCS8,使用结构并初始化变量,如下面的代码所示。CCS 在第 15、16 和 17 行给了我注释,内容如下:
#1546-D:(ULP 15.1)检测到连续的位域分配。建议改用位掩码
我真的不明白在这种情况下使用位掩码会带来什么好处。我认为这句话是一个更普遍的事情,它只在奇怪的边缘情况下发挥作用(?)这个理论在某种程度上得到了E2E 上的这个问题的支持。
附上代码:
#include <msp430.h>
typedef struct
{
unsigned char var1;
unsigned int var2;
unsigned char var3;
unsigned char var4;
} Test;
void main ( void )
{
Test BOB;
BOB.var1 = 1;
BOB.var2 = 1;
BOB.var3 = 3;
BOB.var4 = 1;
}
我真的很想理解这句话,以便我可以相应地改变我的编码习惯,如果这样可以防止将来可能出现的问题。
提前感谢您的任何反馈/答案。
解决方案
编辑:我很确定这是一个错误,您应该将其视为误报。请参阅底部的链接。
我在您粘贴的代码中看不到任何位域?
如果代码看起来像这样,那将是有意义的:
struct s
{
char a : 4;
char b : 4;
};
int main()
{
struct s S;
S.a = 0;
S.b = 0;
return 0;
}
我在 TI 的论坛上注意到这些关于同一警告的看似误报的报告:https ://e2e.ti.com/support/tools/ccs/f/81/t/317480? ULP-15-1-Question https: //e2e.ti.com/support/microcontrollers/msp430/f/166/t/317382?ULP-15-1-Question
我知道它们很旧,但是除非您使用的是最新版本的 CCS,否则这可能是误报的情况?
推荐阅读
- java - AppWidget 在消息发送或接收之前被冻结。如何在发送消息之前启动意图?
- bootstrap-carousel - Bootstrap Carousel Controls 响应但需要它们更精确
- java - 未找到 Hibernate 搜索类异常 Lucene Field$TermVector
- excel - Excel 保护行和列但允许单元格编辑
- xml - Android工作室,xml设计,布局设计
- python - 对存储在字典中的不同形状的 numpy 数组的所有元素求和
- javascript - 如何读取使用 NodeJS 上传的任何文件的 mimetype
- angular - 为什么我的 Angular 6 页面无法加载
- c++ - 使用 void 指针从 c 函数调用模板化成员
- javascript - jquery 多语种语言切换器 js