Hi Andy, > Date: 2026-11-03 21:10:23+0200 > From: Andy Shevchenko > > On Tue, Nov 03, 2026 at 02:27:08PM +0100, Alejandro Colomar wrote: > > > > Here's a simpler implementation of the default arguments in strscpy(9). > > It avoids having to build concatenated names, the ignored '...' in > > __strscpy0, counting arguments, etc. It's replaced by a quite simple > > macro that takes two arguments, and picks the last non-empty one. > > > > It requires a C23 feature, but it's supported as a GNU extension in > > GNU C11 mode, and was implemented a long time ago, so it should be fine. > > Yes and no. > See 551d44200152 ("default_gfp(): avoid using the "newfangled" __VA_OPT__ trick") > for the details. Hmmmm, so sparse is a problem. DEFARG() cannot be implemented with ##__VA_ARGS__ (I believe), so I think this is frozen until sparse is improved to add support for __VA_OPT__. The implementation in that commit you pointed takes advantage of the fact that the default value is hard-coded in the macro, and the macro has zero fixed parameters, which makes it work, but if you add one fixed parameter (which we need for a generic DEFARG() macro), then it doesn't work. GCC's ## is quite limited compared to __VA_OPT__(). I've CCed the sparse matinainer and mailing list. Let's see if they can add support for __VA_OPT__(). > So far NAK from me. Makes sense. Thanks for the review! Have a lovely night! Alex > > -- > With Best Regards, > Andy Shevchenko > > > --