This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/MSP432P401R:结构成员初始化问题

Guru**** 2609955 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/635304/compiler-msp432p401r-issue-with-struct-members-initialization

部件号:MSP432P401R

工具/软件: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。

 

是否有人知道为什么会发生这种情况? 非常感谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [报价用户="user470.9687万"]

    在cpp文件中,会按照如下方式初始化strstructName1数组:

    const structName1 className::arrayName[]=

    [/引述]

    请按照 How to Submit a Compiler Test Case中的说明创建此CPP文件的测试用例。  我不需要运行它。  我希望通过将一个文件编译到程序集,我可以充分了解该问题,从而创建缺陷报告,以便编译器团队能够处理。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您私下提交测试案例。  我可以重现错误。  我在 SDOWP系统中提交了CodeGen-3854以对此进行调查。  欢迎您使用我签名中下面的SDOWP链接进行关注。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请添加链接器选项--cinit_compression=off,并告诉我们这是否会使症状消失。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,考古学家

    我根据您的建议尝试过,但失败了。 这个问题仍然存在。

    我在此处添加了选项并重建了整个项目。 然后在具有TI XDS 100v2的MSP432P401R上调试,发现错误与以前相同。

    感谢您的回复。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉,我们所掌握的材料不足以诊断此问题。 我无法找到测试用例生成的目标文件的任何问题,因此该问题可能发生在链接程序中。 遗憾的是,如果没有链接器的所有输入,我就无法分析该问题,这意味着,如果您生成项目,将其归档,并以私人消息的形式将所有内容发送给我,这将是最简单的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    打包CCS项目的另一种方法在项目 共享一文中介绍

    您在上一个测试用例中秘密发送。 欢迎使用相同的方法。  你可以把它寄给我,或者给考古学家。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,George,
    谢谢。 已将项目文件发送给考古学家。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我相信这极有可能与15.12 .4.LTS中修复的CodeGen-1311相同。 请升级到该版本,然后重试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我刚刚在应用CodeGen-1311的修补程序之前和之后测试了代码,这绝对是修补程序。 我将把CodeGen-3854标记为CodeGen-1311的副本
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    未在TI网站上找到15.12 .4.LTS编译器。 但我已经通过15.12 将编译器升级到CCS6.LTS。 问题不存在,目前尚未出现新问题。

    非常感谢!