From 97bea563d73ed493ddbe0b72309421f9f1c0aad2 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Fri, 5 Apr 2024 22:34:24 +0200 Subject: [PATCH] Codechange: let lengthof fail when anything that isn't a C-style array is passed --- src/stdafx.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/stdafx.h b/src/stdafx.h index 850d18adba..7f598de39e 100644 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -273,6 +273,9 @@ static_assert(SIZE_MAX >= UINT32_MAX); #define M_PI 3.14159265358979323846 #endif /* M_PI_2 */ +template +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.