我想创建一个 64 位数据结构,每个位都应该包含一个值。为此,我创建了一个结构如下。(这与J1939 协议和 ControlApplication NAME有关,以防万一)
typedef struct CA_NAME {
unsigned IdentityNumber : 21; // 21 bits Byte 1.1 to 3.5
unsigned ManufactorerCode : 11; // 11 bits Byte 3.6 to 4.8
unsigned ECUInstance : 3; // 3 bits Byte 5.1 to 5.3
unsigned functionInstance : 5; // 5 bits Byte 5.4 to 5.8
unsigned Function : 8; // 8 bits Byte 6
unsigned Reserved : 1; // 1 bit Byte 7.1
unsigned VehicleSystem : 7; // 7 bits Byte 7.2 to 7.8
unsigned VehicleSystemInstance : 4; // 4 bits Byte 8.1 to 8.4
unsigned IndustryGroup : 3; // 3 bits Byte 8.5 to 8.7
unsigned ArbitraryAddressCapable : 1; // 1 bit Byte 8.8
} CA_NAME; /*64Bit NAME*/
现在我想初始化一个对象实例CA_NAME
CA_NAME j1939 = {};
void Create_CA_NAME() {
j1939.IdentityNumber = 0xFE0D32;
j1939.ManufactorerCode = 0x57;
....
}
在这里,我得到实时分析错误(我猜来自 ReSharper)(即第一次分配)
初始化结构实例的正确方法是什么?