Deutsch English Français Italiano |
<865xo5pb8b.fsf@linuxsc.com> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Tim Rentsch <tr.17687@z991.linuxsc.com> Newsgroups: comp.lang.c Subject: Re: 80386 C compiler Date: Fri, 29 Nov 2024 21:00:20 -0800 Organization: A noiseless patient Spider Lines: 32 Message-ID: <865xo5pb8b.fsf@linuxsc.com> References: <vhvbhf$28opb$1@dont-email.me> <vhvsm9$2bmq9$1@dont-email.me> <vi0dt1$2el7m$1@dont-email.me> <20241125101701.894@kylheku.com> <qrp9kjd09n2v3srmabqccmnsbr1r6nkm2m@4ax.com> <20241125132021.212@kylheku.com> <vi6qka$3umr4$1@dont-email.me> <20241127112746.171@kylheku.com> <vi7tmc$4ur3$4@dont-email.me> <20241127134839.469@kylheku.com> <vi88n4$74j9$1@dont-email.me> <20241128201403.206@kylheku.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Date: Sat, 30 Nov 2024 06:00:21 +0100 (CET) Injection-Info: dont-email.me; posting-host="cbb822f8f85af8befb29db6227d47c5b"; logging-data="1611253"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18O+6hKMkRa87ODWQ8Ugu4TgXwpUpw4sRU=" User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux) Cancel-Lock: sha1:m3CpPV682T5Ng05jrW8HSsuyDSo= sha1:BfraRkPJ0YxZPkBvkmHj3DBh1wk= Bytes: 2463 Kaz Kylheku <643-408-1753@kylheku.com> writes: > On 2024-11-27, James Kuyper <jameskuyper@alumni.caltech.edu> wrote: > >> If there weren't a rule mandating the order in which initializers >> were applied, when two or more initializers affect the same >> object, it wouldn't be possible to be certain which one overrode >> the others. That's wrong. The priority rule for initializing the same subobject depends not on order of evaluation but on syntactic order. There doesn't have to be a rule for evaluation order to make the order of subobject overriding be well defined. > It would make sense for that simply to be a constraint violation; > two initializations for the same object are being requested. It isn't that simple. There are situations where overriding the initialization of a particular subobject makes sense, and is useful. Example: typedef struct { int x, y; } Bas; typedef struct { Bas b[2]; } Foo; Foo sample_foo( Bas b ){ Foo foo = { b, b, .b[1].y = -1 }; return foo; } The subobject .b[1].y is overridden, but we can't take the previous initialization of .b[1] without changing the semantics.