VarArgs
Config: #define TPP_CONFIG_HAVE___VA_ARGS__ 0/1
Check: #if __has_feature(tpp_va_args) || __has_extension(tpp_va_args)
Function: tpp.c: _TPPLexer_CreateExpandedMacroFunction
Tpp allows macros to be defined with variadic arguments. See the syntax showcase below for detail.
The __VA_ARGS__
Identifier may not be used as parameter for functions
Hint: As fallback for invalid macro function calls, tpp always considers every function as a variadic function, but will only utter a too many arguments warning, if the function isn't declared as variadic.
#define v_args(func,...) func(__VA_ARGS__)
// NOTE: The following line will not yield a warning
// due to the relaxed argument rules of TPP (s.a. The page for Macros)
v_args() // Expands to [(][)]
v_args(foo) // Expands to [foo][(][)]
v_args(foo,10) // Expands to [foo][(][10][)]
v_args(foo,10,20) // Expands to [foo][(][10][,][20][)]
s.a. [Macros]