#define SIZEOF_MEMBER(_t, _m) sizeof(((_t *)0)->_m)
#define NUM_ELEMENTS(_t) (sizeof((_t)) / sizeof(*(_t)))
+/*
+ * For use with multidimensional arrays where
+ * the deeper array element has a size smaller than
+ * a pointer i.e. char foo[n][m]
+ */
+#define NUM_PTR_ELEMENTS(_t) (sizeof((_t)) / sizeof(void *))
+
/*
* Type checking
*/
return "\v";
default:
- if (!p || (p++ >= ((char **)str + (NUM_ELEMENTS(str) - 1)))) p = (char **)str;
+ if (!p || (p++ >= ((char **)str + (NUM_PTR_ELEMENTS(str) - 1)))) p = (char **)str;
if (unprintables[(uint8_t)c]) {
snprintf(*p, sizeof(*str), "\\x%x", c);