C中结构的默认初始化

我想在纯 C 中做这样的事情:

struct data_msg {
    uint8_t id = 25;
    uint8_t       data1;
    uint32_t      data2;
}

我需要将 id 默认设置为 25,这样当我创建结构的实例时,id 已经设置为 25,如下所示:

struct data_msg      tmp_msg;
printf("ID: %d", tmp_msg.id); // outputs ID: 25

有没有办法在C中做到这一点?我知道它可以在 C++ 中完成,但还没有在 C 中找到方法。

在 C 中这样做会引发错误:

struct data_msg { uint8_t id = 25; }

泰德·林格莫

不幸的是,你不能,但如果你经常这样做,你可以创建一个用于初始化的常量:

struct data_msg {
    uint8_t       id;
    uint8_t       data1;
    uint32_t      data2;
};

const struct data_msg dm_init = {.id = 25};

int main(void) {
    struct data_msg var = dm_init;  // var.id is now 25, data1 = 0, data2 = 0
    // ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章