Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/usr.bin/xlint



In article <YF6KPfrQxwDxKL8F%pony.stderr.spb.ru@localhost>,
Valery Ushakov  <uwe%stderr.spb.ru@localhost> wrote:
>On Sat, Mar 27, 2021 at 01:44:07 +0100, Roland Illig wrote:
>
>> On 27.03.2021 00:16, Valery Ushakov wrote:
>> > On Sat, Mar 27, 2021 at 00:01:25 +0100, Roland Illig wrote:
>> > > To me, writing 'sizeof expr' is clearer than 'sizeof(expr)' since
>> > > 'sizeof' is not a function, same as with 'return'.
>> > > 
>> > > Did I misinterpret the style guide in this regard?
>> > 
>> > We do want it to look like a function call (and so the usual style
>> > rules for the function call apply).  Think of cases where it's used as
>> > a subexpression, e.g.
>> > 
>> >      sizeof(expr) + 4
>> 
>> The parentheses of a function call expression have highest precedence
>> and bind to the left.  The parentheses to the right of the sizeof
>> operator do not bind at all though.  Therefore I find it misleading to
>> write them like in a function call.
>> 
>> The following code demonstrates why I prefer to omit the parentheses
>> around the argument to the 'sizeof' operator:
>[...]
>> 	/* misleading since it looks like a function call */
>> 	printf("%zu\n", sizeof(argv)[3]);
>[...]
>> It was fun to find out that there actually _is_ a case where the
>> different precedence matters.  At first I had thought that the whole
>> discussion would be academic anyway.
>
>You cite examples worthy of IOCCC, but we already know C is
>treacherous (things like relative precedence of bitwise and
>comparison, etc).  But most uses of sizeof are not like that.
>
>Note also that the parentheses are required fort the sizeof(type-name)
>variant.  I.e. you cannot write sizeof int, only sizeof(int).
>
>IOCCC cases aside, I still maintain that sizeof *p + 4 is strictly
>less readable than sizeof(*p) + 4 and is nicely similar to
>sizeof(uint32_t) + 4 etc
>
>Derek Jones' "The New C Standard" (influential exegetical tour de
>force) doesn't seem to explicitly recommend parentheses for the
>unary-expr case but seems to consitently use it in its own text.

I think we should document we prefer the parenthesized version in style
and call it a day.

Best,

christos



Home | Main Index | Thread Index | Old Index