On 2024-03-18 00:30, Jonathan Wakely wrote: >>+@item __EXP_COUNTER__ >>+This macro's name means "(macro) expansion counter". >>+Outside of macro replacement sequences, it expands to the integer >>+token @code{1}. This make it possible to easily test for the presence >>+of this feature using conditional directives such as >>+@code{#if __EXP_COUNTER__}. > > It's a macro, so you can just use '#ifdef __EXP_COUNTER__' to test if > it's supported. Is this additional behaviour necessary?
Thanks for looking at the patch. The macro has to be defined, but it doesn't have to be 1. Outside a macro body, it could just appear defined with an empty value, as if by #define __EXP_COUNTER__. When I dump the predefined macros of a nearby GCC installation, I see very few empty ones: $ echo | gcc -dM -E - | awk 'NF == 2' #define __USER_LABEL_PREFIX__ #define __REGISTER_PREFIX__ The __EXP_COUNTER__ and __UEXP_COUNTER__ symbols are intended for suffix and infix use, so they are roughly in a kind of category with those those two. I will make that change, and also fix the grammar error and remove the conflict-promoting ChangeLog changes.