diff options
Diffstat (limited to 'src/nvim/macros.h')
-rw-r--r-- | src/nvim/macros.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/nvim/macros.h b/src/nvim/macros.h index 215ad3a1f7..7dd8120d09 100644 --- a/src/nvim/macros.h +++ b/src/nvim/macros.h @@ -152,4 +152,12 @@ # define RESET_BINDING(wp) (wp)->w_p_scb = FALSE; (wp)->w_p_crb = FALSE +/// Calculate the length of a C array. +/// +/// This should be called with a real array. Calling this with a pointer is an +/// error. A mechanism to detect many (though not all) of those errors at compile +/// time is implemented. It works by the second division producing a division by +/// zero in those cases (-Wdiv-by-zero in GCC). +#define ARRAY_SIZE(arr) ((sizeof(arr)/sizeof((arr)[0])) / ((size_t)(!(sizeof(arr) % sizeof((arr)[0]))))) + #endif // NVIM_MACROS_H |