Codechange: let lengthof fail when anything that isn't a C-style array is passed

This commit is contained in:
Rubidium 2024-04-05 22:34:24 +02:00 committed by rubidium42
parent c544a2be0a
commit 97bea563d7
1 changed files with 4 additions and 1 deletions

View File

@ -273,6 +273,9 @@ static_assert(SIZE_MAX >= UINT32_MAX);
#define M_PI 3.14159265358979323846
#endif /* M_PI_2 */
template <typename T, size_t N>
char (&ArraySizeHelper(T (&array)[N]))[N];
/**
* Return the length of an fixed size array.
* Unlike sizeof this function returns the number of elements
@ -281,7 +284,7 @@ static_assert(SIZE_MAX >= UINT32_MAX);
* @param x The pointer to the first element of the array
* @return The number of elements
*/
#define lengthof(x) (sizeof(x) / sizeof(x[0]))
#define lengthof(array) (sizeof(ArraySizeHelper(array)))
/**
* Get the end element of an fixed size array.