| Deutsch English Français Italiano |
|
<868qqu2bnl.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!eternal-september.org!.POSTED!not-for-mail From: Tim Rentsch <tr.17687@z991.linuxsc.com> Newsgroups: comp.lang.c Subject: Re: Results of survey re. a new array size operator Date: Wed, 29 Jan 2025 01:48:46 -0800 Organization: A noiseless patient Spider Lines: 37 Message-ID: <868qqu2bnl.fsf@linuxsc.com> References: <87a5bgsnql.fsf@gmail.com> <20250124135623.00004479@yahoo.com> <QgNkP.76380$ZEZf.54113@fx40.iad> <20250124115250.760@kylheku.com> <afUkP.928261$2xE6.342839@fx18.iad> <20250124165243.678@kylheku.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Date: Wed, 29 Jan 2025 10:48:47 +0100 (CET) Injection-Info: dont-email.me; posting-host="ba8d9ca2da4b9314498ee7469992f70e"; logging-data="2450859"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18Ds93O+PnvkQp6L9gjQfAA3F1/7lEIOkk=" User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux) Cancel-Lock: sha1:S8sPWBhvn5MaX2+EQonR9DHuIyM= sha1:lahMlXREWrnoMODKrc2iYhygoK8= Bytes: 2469 Kaz Kylheku <643-408-1753@kylheku.com> writes: > On 2025-01-24, Scott Lurndal <scott@slp53.sl.home> wrote: > >> Kaz Kylheku <643-408-1753@kylheku.com> writes: >> >>> On 2025-01-24, Scott Lurndal <scott@slp53.sl.home> wrote: >>> You can define >>> >>> #define arraysize (x) (sizeof (x) / sizeof ((x)[0)) >> >> You can, but you don't need to. > > The repetition in things like: > > sizeof foo->bar.buf / *sizeof foo->bar.buf > > is just irksome. Why do I have to say that thing twice, > to get its number of elements? > >> Often readability suffers >> when you use macros, not to mention the other quirks of >> C macro use (in C++, a constexpr function might be >> suitable, but the naming being arbitrary (e.g. arraysize, >> NUM_ELEMENTS, SIZE, et alia) doesn't aid in readability >> or maintainability. > > The naming being arbitrary is the argument for standardizing the > name for the macro and sticking it into, for instance, <stddef.h>. > > If we didn't have offsetof there, we might have to deal with > OFFSETOF, offsetof, offset, member_offset, and others. That's a flawed analogy. A macro to compute the number of elements in an array can be done in standard C. The functionality of offsetof cannot be done in standard C, and that's what it needs to be in the standard library.