小编典典

如何根据 C 编程语言标准初始化结构

all

我想初始化一个结构元素,在声明和初始化中分开。这就是我所拥有的:

typedef struct MY_TYPE {
  bool flag;
  short int value;
  double stuff;
} MY_TYPE;

void function(void) {
  MY_TYPE a;
  ...
  a = { true, 15, 0.123 }
}

这是MY_TYPE按照 C 编程语言标准(C89、C90、C99、C11 等)声明和初始化局部变量的方式吗?或者有什么更好的或者至少可以工作的吗?

更新 我最终得到了一个静态初始化元素,我根据需要设置了每个子元素。


阅读 139

收藏
2022-03-09

共1个答案

小编典典

在 (ANSI) C99 中,您可以使用 指定的初始化程序 来初始化结构:

MY_TYPE a = { .flag = true, .value = 123, .stuff = 0.456 };

其他成员初始化为零:“省略的字段成员被隐式初始化,与具有静态存储持续时间的对象相同。”
https://gcc.gnu.org/onlinedocs/gcc/Designated-
Inits.html)

2022-03-09