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.

[参考译文] TMS320F28379S:Cl2000编译器支持未命名字段(结构和联合体)

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1266896/tms320f28379s-cl2000-compiler-support-for-unnamed-fields-struct-and-unions

器件型号:TMS320F28379S

您好、我想知道 C2000编译器是否支持未命名字段。 未命名的结构和联合体可以与 C 中的-FMS-extensions 一起使用。C2000编译器手册显示支持未命名字段、其中和我在代码中使用标志时一样、编译器正在抛出一个无法识别-FMS-extension 的错误。

有人能解释一下吗?  

谢谢。

Bharath

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

    https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Unnamed-Fields.html#Unnamed-Fields 请查看有关 FMS-extensions 的更多信息的链接

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想知道 C2000编译器是否支持未命名字段

    默认情况下确实如此。  不需要任何选项。

    未命名字段的扩展、GCC 文档称其可在以下标志下使用  -FMS-扩展 或  -fplan9-扩展 不支持。  这是因为 C28x 编译器不基于 GCC、不支持这些选项。

    谢谢。此致、

    -乔治

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

    您好、George、

    我们有使用未命名字段的代码、特别是未命名的结构。 在我们尝试使用这些结构时、编译器会发出错误消息。

    举一个例子:  

    如果我尝试从 s2、like、s2->当前编译器指定的实例访问 s1的成员,则会发生错误。

    我们已将这些未命名字段与 FMS 扩展标记一起使用。 我在设置中也根据 C2000编译器手册宽松 ANSI 标志。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们使用这些未命名字段时带有 FMS-extensions 标志

    我想说的是、这种类型的代码可与 其他基于 GCC 的 MCU 上的 FMS 扩展标志一同使用。  

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

    您使用的未命名字段变体,其中 结构1 未在的内部完全指定 结构2 ,不受 C28x 编译器支持。

    谢谢。此致、

    -乔治

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

    您好、George、

    感谢您的快速回复。 我提出这个问题的原因是我们内部架构的代码经常使用未命名的字段来创建模块化设计。

    能否举个例子、说明如何在满足 C2000编译器要求的结构体中创建未命名结构? 也许我们可以调整内部代码来支持这种变体的可重用性。 非常感谢在此提出的任何建议。

    谢谢。

    Bharath

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请举例说明如何在满足 C2000编译器要求的结构内创建未命名结构[/引号]

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    struct s2 {
    struct {
    uint16_t init;
    uint16_t current;
    };
    uint16_t data1;
    uint16_t data2;
    };
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    未命名的结构必须在包含它的已命名结构内完全指定。

    谢谢。此致、

    -乔治