gpp icon indicating copy to clipboard operation
gpp copied to clipboard

Variadic macros

Open Artoria2e5 opened this issue 3 years ago • 3 comments

A significant shortfall between gpp and cpp appears to be variadic macros. People have asked for it in Fortran and in JavaScript.

This would require expanding the meta definition to have:

  • A string to indicate variadic args, ... in C
  • A string to reference variadic args, __VA_ARGS__ in C

Or an interesting alternative/parallel expansion is to expand the argument reference sequence to handle ranges. The new stuff will look like... maybe #{num}.

  • When num is just a decimal number, it stands for the nth argument.
  • When num is a decimal number prefixed by .., it stands for all arguments starting with the nth inclusive. A suffix is all arguments ending with the nth inclusive.
  • When num is two decimal numbers spearated by .., it stands for all arguments between the two numbers inclusive.

Both cases still need some magic to remove the comma with an empty expansion.

Artoria2e5 avatar Mar 01 '21 04:03 Artoria2e5

Support of variadic macro would be great!

vilkov avatar Sep 11 '21 21:09 vilkov

Patches welcome.

logological avatar Sep 13 '21 08:09 logological

I seem to have worked on the #{num} thing for a while at https://github.com/Artoria2e5/gpp/tree/var, but there's no way I have tested it. I have no idea what got into my head to handwrite a state machine. Even if it works the comma magic still needs to be added -- __VA_OPT__ in cpp.

Artoria2e5 avatar Sep 23 '21 03:09 Artoria2e5