https://github.molgen.mpg.de/mariux64/mxq/blob/3a519d7fc3d5a4de1b5b0a9f98b021608e56f5cb/mx_getopt.h#L87 To initialize a field multiple times by repeating a C11 designator seems to produce the expected results (last initalization is used). Gcc explicitly mentions that in its manual [1]. Clang produces the same code [2]. Probably all reasonable compilers will do so. However, currently clang generates a warning ("initializer overrides prior initialization of this subobject [-Winitializer-overrides]") and gcc does so with -Wextra ("initialized field overwritten [-Woverride-init]"). I'm not sure about the standard, but the warnings might hint, that the standard does not define this. [1]: https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html bottom of page [2]: https://godbolt.org/z/so7KEv94T