https://gcc.gnu.org/bugzilla/show_bug.cgi?id=33877
--- Comment #16 from Alejandro Colomar <foss+...@alejandro-colomar.es> --- (In reply to Alejandro Colomar from comment #14) > So, either they consider there's always at least an argument, > or there's never one argument. > It's possible to write one that using __VA_OPT__ would differentiate 0 and 1 > depending on the argument being empty or not, but probably because these > macros are older than C23, they don't do it. > > $ gcc -E argc3.c | grep -v ^# > 22: foo: 6 > 23: foo: 6 > 24: foo: 5 > 25: foo: 4 > 26: foo: 3 > 27: foo: 2 > 28: foo: 2 > 29: foo: 1 > 30: foo: 0 > > 32: bar: 5 > 33: bar: 5 > 34: bar: 4 > 35: bar: 3 > 36: bar: 2 > 37: bar: 1 > 38: bar: 0 > 39: bar: 0 > 40: bar: 0 Please ignore this part; it was from a previous research which was incomplete and wrong, and I missed removing it from my final report.