您好、我想知道 C2000编译器是否支持未命名字段。 未命名的结构和联合体可以与 C 中的-FMS-extensions 一起使用。C2000编译器手册显示支持未命名字段、其中和我在代码中使用标志时一样、编译器正在抛出一个无法识别-FMS-extension 的错误。
有人能解释一下吗?
谢谢。
Bharath
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.
您好、我想知道 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编译器要求的结构内创建未命名结构[/引号]Fullscreen12345678struct s2 {struct {uint16_t init;uint16_t current;};uint16_t data1;uint16_t data2;};XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXstruct s2 { struct { uint16_t init; uint16_t current; }; uint16_t data1; uint16_t data2; };未命名的结构必须在包含它的已命名结构内完全指定。
谢谢。此致、
-乔治