我要面对的问题如下.我有一个这样的 struct :
typedef struct
{
uint8 nibble_1 : 4;
uint8 nibble_2 : 4;
uint8 data_1;
uint8 data_2;
uint8 data_3;
} NibbleStruct;
它是用于CAN通信的32位消息.
在代码中,我有以下内容:
...
NibbleStruct nibble_struct;
uint8 nibble_to_assign = 0U;
nibble_struct.nibble_1 = nibble_to_assign;
...
我需要保留GCC(Gnu99)标志-Werror=conversion
,但这会给出错误消息:
File_name.c错误:从‘uint8’转换为‘unsign char:4’可能会更改其值[-Werror=转换]|
我试着用像这样的东西来选角
...
nibble_struct.nibble_1 = (uint8:4) nibble_to_assign;
...
和
...
nibble_struct.nibble_1 = (uint8) nibble_to_assign : 4;
...
但这并不令人惊讶,因为它没有编译.
有没有办法将变量nibble_to_assign
转换为 struct 体的nibble nibble_1
?或在 struct 外部的代码中声明半字节.