Hi Alejandro, > - I have plans for improving _Countof as a GNU extension to work on > array parameters to functions. I mean making this possible: > > wchar_t * > wmemset(size_t n; wchar_t wcs[n], wchar_t wc, size_t n) > { > for (size_t i = 0; i < countof(wcs); i++) > wcs[i] = wc; > return wcs; > }
The sizeof operator does not work well in this case, right? So that would be a case where countof works _better_ than sizeof. > What worries me of adding countof to C++ is that they may use it in > some way that could preclude my planned extension. So I'll not > remind C++ people about this until I made sure my extension is > deployed in both GCC and Clang, and maybe in ISO C. While I understand this, it still means that gnulib — which strives to make the same code usable in C++ like in C — will probably have to override <stdcountof.h> roughly like this: #ifdef __cplusplus template <typename T, size_t N> constexpr size_t countof(T const (&)[N]) { return N; } #else # define countof _Countof #endif (And I have no idea whether this definition will work for variable-sized arrays and for function parameters.) Bruno