Path: csiph.com!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: Tim Rentsch
Newsgroups: comp.lang.c
Subject: Re: Sequencing guarantees for macro versions of standard functions
Date: Mon, 24 Jan 2022 07:27:04 -0800
Organization: A noiseless patient Spider
Lines: 34
Message-ID: <864k5tnohj.fsf@linuxsc.com>
References: <86k0euq62t.fsf@linuxsc.com> <87lez6xeld.fsf@nosuchdomain.example.com> <868rv5oldy.fsf@linuxsc.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Info: reader02.eternal-september.org; posting-host="d742d26243a9575adb46fc0e29496190"; logging-data="3706"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/XzL7hm22/JoTrC/NZGSepX2uWPrwCVTw="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:bHr6ofIO3uQSep45JGCSFFUnMh4= sha1:ePoNpg1FG4b5JBFRI+pXdL/utlo=
Xref: csiph.com comp.lang.c:164578
Andrey Tarasevich writes:
> On 1/23/2022 7:56 PM, Andrey Tarasevich wrote:
>
>> On 1/23/2022 7:36 PM, Tim Rentsch wrote:
>>
>>> However, the suggested rewrite has different semantics than the
>>> previous single assignment with function call. If we want to
>>> keep the same semantics but still be able to use the macro
>>> form (but without any sequencing issues), a different writing
>>> is needed, as for example
>>>
>>> x = modf( x, (double[]){ 0 } );
>>>
>>> Writing the call this way should make it obvious that the value
>>> stored in/through the second argument is ignored and discarded.
>>
>> That would be
>>
>> x = modf( x, &(double[]){ 0 } );
>
> Opps, my sitake. Sorry, I missed the `[]` part.
>
> Of course, your original variant is correct. Although I don't see
> the point of bringing arrays into the picture. One can just do
>
> x = modf( x, &(double){ 0 } );
For no particular reason I can point to (no pun intended), in
situations like this one I normally use the array type form in
preference to the & form. I find it easier to digest, and also
think it expresses more directly what I want to convey. I'm sure
many people would normally use the & form, and I'm okay with that
choice, but it doesn't change my choice.