工具/软件:TI C/C++编译器
您好,
使用TI 15.12 v.3.LTS编译器在CCS 6.1 中编码时,我遇到了结构成员初始化问题。
结构定义如下所示:
结构结构名称1
{
enum member1;
枚举成员2;
工会成员3;
};
联合的定义如下:
工会名称
{
CPU_INT16U字[2];
CPU_FP32 flt;
CPU_INT32U u32;
勘误码(*pFunc)(CPU_void);
unionName(){flt = 0.0f;}
unionName (CPU_FP32 _f){flt =_f;}
unionName (CPU_INT32U _u32){u32 =_u32;}
unionName (CPU_INT16U _W1,CPU_INT16U _w2){word[0]=_W1;word[1]=_w2;}
unionName (勘误码(* pFunc)(CPU_void)){pFunc =_pFunc;}
};
在cpp文件中,会按照如下方式初始化strstructName1数组:
const structName1 className::arrayName[]=
{
{1,0, unionName (1,7)},
{2,7, unionName (funcName1)},
{0,0, unionName()}//必须是最后一项
};
然后我编译了整个项目,没有收到任何关于这个结构的错误或警告。 接下来,我在使用TI XDS 100V2的MSP432P401R上调试了此项目。
调试器在main()停止后,我在Memory Watch窗口中检查了arrayName。
地址0x20.0085万A4处的数据值"0x01"与初始化值匹 配,而地址0x20.0085万AC处的值"0x87"与初始化值"0x02"不匹配。 它与0x20.0085万AD处的值与0x07不匹配是相同的错误。
仅当结构中存在联合定义时,才会出现此问题。 它一直出现,除了这种结构数组的第一个menber。
是否有人知道为什么会发生这种情况? 非常感谢!

