> From: Stephen Hemminger [mailto:step...@networkplumber.org]
> Sent: Sunday, 12 November 2023 01.01
> 
> On Fri,  6 Oct 2023 11:29:32 +0100
> Bruce Richardson <bruce.richard...@intel.com> wrote:
> 
> > diff --git a/lib/eventdev/rte_eventdev.c
> b/lib/eventdev/rte_eventdev.c
> > index 95373bbaad..adc9751cef 100644
> > --- a/lib/eventdev/rte_eventdev.c
> > +++ b/lib/eventdev/rte_eventdev.c
> > @@ -9,6 +9,7 @@
> >  #include <errno.h>
> >  #include <stdint.h>
> >  #include <inttypes.h>
> > +#include <assert.h>
> >
> >  #include <rte_string_fns.h>
> >  #include <rte_log.h>
> > @@ -28,6 +29,8 @@
> >  #include "eventdev_pmd.h"
> >  #include "eventdev_trace.h"
> >
> > +static_assert(sizeof(struct rte_event) == 16, "Event structure size
> is not 16-bytes in size");
> > +
> >  static struct rte_eventdev rte_event_devices[RTE_EVENT_MAX_DEVS];
> 
> Please don't reinvent RTE_BUILD_BUG_ON().
> Instead fix that to be a static_assert()

I would say the opposite:
With our upgrade to the C11 standard, let's get rid of the RTE_BUILD_BUG_ON() 
workaround for the lack of static_assert() in older C standards.

Unfortunately, the static_assert(expression) variant without the "message" 
parameter, which would make our RTE_BUILD_BUG_ON() macro completely obsolete, 
requires C23. And I don't see how we can make this variant available with C11. 
So we probably have to wait until DPDK requires C23.

Until then, let's gradually phase out the DPDK-specific RTE_BUILD_BUG_ON() in 
favor of standard C's static_assert(), and live with the inconvenience of 
having to provide a message parameter for it.

Please also note that static_assert() can be used outside code blocks, which 
makes it handy for use in header files.

Reply via email to