[PATCH v2 01/10] eal: add workaround for __builtin_constant_p
Stephen Hemminger
stephen at networkplumber.org
Wed Feb 19 18:10:11 CET 2025
On Wed, 19 Feb 2025 08:50:02 -0800
Andre Muezerie <andremue at linux.microsoft.com> wrote:
> On Tue, Feb 18, 2025 at 06:12:04PM +0100, Morten Brørup wrote:
> > > From: Andre Muezerie [mailto:andremue at linux.microsoft.com]
> > > Sent: Tuesday, 18 February 2025 17.32
> > >
> > > There's no MSVC equivalent for compiler extension __builtin_constant_p.
> > > EAL already had __rte_constant which was used as a first attempt to
> > > workaround __builtin_constant_p when using MSVC. However, there are
> > > pieces of code that would benefit from being able to provide a default
> > > value to be used instead of it being always 0 like how it was done by
> > > __rte_constant.
> > >
> > > A new macro is added here allowing such default to be provided by the
> > > caller.
> >
> > NAK to the new macro.
> >
> > Please use the sizeof() hack suggested by Stephen to provide an implementation of __rte_constant(e) for MSVC.
> > Here's a link to an example of the hack:
> > https://news.ycombinator.com/item?id=16720172
>
> Thanks for the link. I tried to use the hack as suggested but turns out it does
> not work with msvc. It results in error C2100: "you cannot dereference an
> operand of type 'void'".
>
> I'm open to further suggestions.
Maybe contact the MSVC team? there really ought to be way to do this.
The compiler knows what is constant and what is not since it needs this for static assertions.
More information about the dev
mailing list