[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v1 1/2] [troff]: Add lengthof() macro.
From: |
Alejandro Colomar |
Subject: |
Re: [PATCH v1 1/2] [troff]: Add lengthof() macro. |
Date: |
Sun, 27 Aug 2023 02:22:04 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.1 |
Hi Lennart,
On 2023-08-27 02:00, Alejandro Colomar wrote:
> Hi Lennart, Branden,
>
> On 2023-08-26 21:36, Lennart Jablonka wrote:
>> Quoth Alejandro Colomar:
>>> The good news is that I like the implementation. I just don't like the
>>> name. I have a sizeof_array() macro that does
>>>
>>> #define sizeof_array(a) (sizeof(a) + must_be_array(a))
>>>
>>> That is, it calculates the size in bytes that the array takes up in memory.
>>>
>>> <https://github.com/shadow-maint/shadow/pull/762/commits/8d06d849dcb5f7041e048d866ec7ce6c1853245b>
>>>
>>> For a macro that returns the number of elements in an array, I'd like a
>>> name that cannot be confused with that at all. NELEMS(), NITEMS(),
>>> array_count(), or lengthof() all seem better than array_size().
>>>
>>> I'm not a fan of lengthof(), even if it's a proposal to ISO C, as so far
>>> the term "length" was only the number of non-zero characters in a string,
>>> and overloading it to mean the number of elements in an array would
>>> similarly be a bad thing. At least it's not so confusing as size, though.
>>>
>>> NITEMS() or NELEMS() seems the best choice to me.
>>
>> I like both lengthof (as “length” is commonly used for the number
>> of elements in an array) and nelem (which is what Plan 9 uses).
>> I do wanna note that the term used by the C standard is “size” and
>> the term used by the C++ standard is “bound.” How about boundof?
>
> A quotation of ISO C would be interesting here. Preferably C17.
>
> I certainly remember ISO C talking about the number of elements in an
> array. While I wouldn't be surprised to learn that it uses the term
> 'size' when it's being more specific, I don't recall it from the top
> of my head.
Self correction: it talks about elements in an array, but not necessarily
about the number of it.
And here's a quote where ISO C says that the size of an array is the
value delimited by []: <https://port70.net/%7Ensz/c/c11/n1570.html#6.7.6.2p1>
Confusingly enough, when it talks about sizeof(), it let's you think that
the size of an array could also mean its size in bytes. ISO C should
probably reword one of those.
<https://port70.net/%7Ensz/c/c11/n1570.html#6.5.3.4p2>
Cheers,
Alex
--
<http://www.alejandro-colomar.es/>
GPG key fingerprint: A9348594CE31283A826FBDD8D57633D441E25BB5
OpenPGP_signature
Description: OpenPGP digital signature
- [PATCH v1 2/2] [troff]: Rewrite function in C., (continued)
- [PATCH v1 2/2] [troff]: Rewrite function in C., Alejandro Colomar, 2023/08/03
- Re: [PATCH v1 2/2] [troff]: Rewrite function in C., Alejandro Colomar, 2023/08/03
- Re: [PATCH v1 1/2] [troff]: Add lengthof() macro., G. Branden Robinson, 2023/08/04
- Re: [PATCH v1 1/2] [troff]: Add lengthof() macro., Alejandro Colomar, 2023/08/04
- Re: [PATCH v1 1/2] [troff]: Add lengthof() macro., James K. Lowden, 2023/08/07
- Re: [PATCH v1 1/2] [troff]: Add lengthof() macro., G. Branden Robinson, 2023/08/25
- Re: [PATCH v1 1/2] [troff]: Add lengthof() macro., Alejandro Colomar, 2023/08/25
- Re: [PATCH v1 1/2] [troff]: Add lengthof() macro., G. Branden Robinson, 2023/08/26
- Re: [PATCH v1 1/2] [troff]: Add lengthof() macro., Lennart Jablonka, 2023/08/26
- Re: [PATCH v1 1/2] [troff]: Add lengthof() macro., Alejandro Colomar, 2023/08/26
- Re: [PATCH v1 1/2] [troff]: Add lengthof() macro.,
Alejandro Colomar <=
Re: [PATCH v1 2/2] [troff]: Rewrite function in C., Thorsten Glaser, 2023/08/04
Re: [PATCH v1 1/2] [troff]: Add lengthof() macro., Thorsten Glaser, 2023/08/04