Hi Bruno, On Tue, Jun 03, 2025 at 12:21:53AM +0200, Alejandro Colomar wrote: > > 2025-06-02 Bruno Haible <[email protected]> > > > > stdcountof-h: Add tests. > > * tests/test-stdcountof-h.c: New file. > > * tests/test-stdcountof-h-c++.cc: New file. > > * modules/stdcountof-h-tests: New file. > > * modules/stdcountof-h-c++-tests: New file. > > > > stdcountof-h: New module. > > * lib/stdcountof.in.h: New file. > > * m4/stdcountof_h.m4: New file. > > * modules/stdcountof-h: New file. > > Minor issue: > > An <stdcountof.h> that is like C23. > > That should say C2y; C23 didn't have <stdcountof.h>.
Oh, and another issue:
$ grepc countof .
./lib/stdcountof.in.h:#define countof(a) \
(sizeof (a) / sizeof (a[0]) + 0 * _gl_verify_is_array (a))
(a[0]) should be ((a)[0])
Otherwise, a weird argument could misbehave. I think it's not easy to
pass something bad, but I don't know; people invent weird stuff all the
time.
I suggest applying this:
diff --git i/lib/stdcountof.in.h w/lib/stdcountof.in.h
index 3bbb78390a..af62b4d45b 100644
--- i/lib/stdcountof.in.h
+++ w/lib/stdcountof.in.h
@@ -33,7 +33,7 @@
void func (int a[10]) { ... }
*/
#define countof(a) \
- (sizeof (a) / sizeof (a[0]) + 0 * _gl_verify_is_array (a))
+ (sizeof (a) / sizeof ((a)[0]) + 0 * _gl_verify_is_array (a))
/* Attempts to verify that A is an array. */
#if defined __cplusplus
Have a lovely night!
Alex
>
> BTW, do you have in plans for using this module within gnulib itself?
>
>
> Have a lovely night!
> Alex
>
> --
> <https://www.alejandro-colomar.es/>
--
<https://www.alejandro-colomar.es/>
signature.asc
Description: PGP signature
