繁体   English   中英

嵌入式 C++ static 结构初始化 arrays

[英]Embedded C++ static initialization of struct arrays

在迁移到 C++ 时,我需要某个似乎已弃用的 function。
sorry, unimplemented: non-trivial designated initializers not supported

对于 memory 约束系统,在 C++ 中实现以下数据存储系统的正确方法是什么?

typedef union union_t {
    float f;
    int i;
} arg;

typedef struct type_t {
    int a;
    arg b;
    int d;
} element;

const element list[] = {
    {
      .a = 1,
      .b = { .f = 3.141519f },
      .d = 6
    },
    {
      .a = 3,
      .b = { .i = 1 },
    }
};

通常建议使用std:mapstd:vector 这是合适的,但是list是不可变的,并且必须能够编译并链接到 flash 的特定块。 两者似乎都不适合这个目的。

我能最高的go是ARM编译器6,也就是C++14。

您显示的方式几乎正确,符合传入的 C++20 标准。 只有那个.d也必须被初始化。 是我建议使用的。

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0329r4.pdf

要在 C++14 中处理这个问题,你必须明确地初始化它:

typedef union union_t {
    float f;
    int i;
} arg;

typedef struct type_t {
    int a;
    arg b;
    int d;
} element;

const element list[] = {
    {
      /*.a = */ 1,
      /*.b = */ { /*.f = */ 3.141519f },
      /*.d = */ 6
    },
    {
      /* .a = */ 3,
      /* .b = */ { /* .i = */ 1 },
      0
    }
};

我看到你对嵌入式系统感兴趣,我在哪里可以私下和你谈谈?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM