How to initialize a struct in accordance with C programming language standards

c, initialization, struct

Solution

In C99, you can use a designated initializer to initialize a structure:

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

Other members are initialized as zero: "Omitted field members are implicitly initialized the same as objects that have static storage duration." (https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html)

Problem

I want to initialize a struct element, split in declaration and initialization. This is what I have: ``` typedef struct MY_TYPE { bool flag; short int value; double stuff; } MY_TYPE; void function(void) { MY_TYPE a; ... a = { true, 15, 0.123 } } ``` Is this the way to declare and initialize a local variable of `MY_TYPE` in accordance with C programming language standards (C89, C90, C99, C11, etc.)? Or is there anything better or at least working? Update I ended up having a static initialization element where I set every subelement according to my needs.

Original source

Related problems