04 Jan 2021 - Programming
If a macro expects to accept a variable number of arguments, one can use the syntax below:
#define DBG_PRINT(...) fprintf(stderr, __VA_ARGS__)
DBG_PRINT("This is my %d-th birthday!", 20);
This kind of macro is called variadic. What happens above is that during the pre-processing, the identifier __VA_ARGS__ in the macro body will be replaced by all the tokens, including any commas, inside the DBG_PRINT’s curly brackets. One can also use a name for the variable argument instead of __VA_ARGS__. For example,
#define DBG_PRINT(args...) fprintf(stderr, args)
Pay attention to the args..., there is no comma between args and ....
If you need both named arguments and variable arguments, then you can use the syntax like this:
#define DBG_PRINT(fp, ...) fprintf(fp, __VA_ARGS__)
where the argument fp specifies a FILE*, and everything else after the comma is treated as a variable number of arguments and will be used to replace __VA_ARGS__. In this case, you will need commas to separate named arguments and variable arguments.
| «Prev | More About | Next» |
|---|---|---|
| Adding Comments In Github Pages | Programming | Natas3 - robots.txt |