Path: ...!news.mixmin.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Thiago Adams Newsgroups: comp.lang.c Subject: c initialization algorithm Date: Sun, 13 Oct 2024 18:35:03 -0300 Organization: A noiseless patient Spider Lines: 25 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Sun, 13 Oct 2024 23:35:04 +0200 (CEST) Injection-Info: dont-email.me; posting-host="b9d5dd9688ffdaba1d061cdfa3066275"; logging-data="893810"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19fismwdnGweXoWCW8DZPKRqkAVrB/yLTE=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:0yv8Fvd0cyQK7f3d8jTQaDaqDzM= Content-Language: en-GB Bytes: 1382 The algorithm for C initialization as described in the standard and implemented in gcc allow this. struct X{ int a,b,c; }; int main() { struct X x = {.a=1,2,3,.a=1, 2, 3}; } https://godbolt.org/z/7naedbEM6 Basically, when a designed initializer is found the "cursor" goes to that member and the following members are initialized in order. struct X{ int a,b,c; }; int main() { struct X x = {.a=1,2,3,.a=1, 2, 3, .a=1, 4, 5}; }