[PATCH v3 5/5] eal: replace out of bounds VLA with static_assert
Stephen Hemminger
stephen at networkplumber.org
Wed Jan 17 18:11:36 CET 2024
On Wed, 17 Jan 2024 08:53:44 +0100
Mattias Rönnblom <hofors at lysator.liu.se> wrote:
> > * Triggers an error at compilation time if the condition is true.
> > */
> > -#define RTE_BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
> > +#define RTE_BUILD_BUG_ON(condition) { static_assert(!(condition), #condition); }
> >
> > /*********** Cache line related macros ********/
> >
>
> Should one use RTE_BUILD_BUG_ON() or static_assert() in new DPDK code?
>
> If static_assert() occasionally needs a work-around, it sounds like
> keeping using RTE_BUILD_BUG_ON() everywhere is the better choice.
Either choice is the same. Keeping the macro instead of directly using
static_assert will reduce the effort to change when the next C standard
introduces something different.
But using static_assert() can allow for a better warning message.
More information about the dev
mailing list