c - 初始化 const struct 并明确哪个字段是哪个

标签 c struct initialization constants

我想初始化 const struct :

const struct MyStruct MYSTRUCT_DEFAULTS = {
  "prop1",
  "prop2",
  "prop3",
  123,
  456,
  ...
}

但是在上面,当 struct 很大时,无法区分哪个字段是哪个字段。在 C99 中我可以使用 { .prop1 = "prop1, ...} 语法,但我不在 C99 下编译。

我不相信我可以创建结构然后使用 MYSTRUCT_DEFAULTS.prop1 = "prop1" 因为这会违反它的 const

有没有一种更简洁的方法来初始化我的结构并清楚哪些字段是哪些?显然,我可以在每个字段旁边使用注释,但是当在 struct 中添加或删除字段时,这很容易出错。

最佳答案

我认为注释是你最好的选择(即使你说,你对它们不感兴趣),否则答案是否定的,C99之前没有其他语法糖:

enter image description here

<小时/>

真实文本答案:

const struct MyStruct MYSTRUCT_DEFAULTS = {
    /* First property */  "prop1",
   /* Second property */  "prop2",
 /* Last str property */  "prop3",
       /* Some number */  123,
       /* Magical int */  456,
    /* An ellipse? ;) */  ...
};

看到了吗?我的屏幕截图好多了..

关于c - 初始化 const struct 并明确哪个字段是哪个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23843678/

相关文章:

c++ - HDF5 中的嵌套复合数据类型

c++ - 如何在 C++ 代码中使用 C 结构?

c++ - Printf 疯了

c++ - MFC:CFormView 派生类的 OnInitialUpdate 函数

c - 如何在 C 中初始化指向结构的指针?

wpf - 在等待用户控件初始化时显示忙碌指示符

检查数字是否为 a ** b

c - 这个十六进制算术是如何工作的?

c - 将链表放入 C 结构中(段错误)

c++ - C++结构语法 “a : b”是什么意思