I have two macros FOO2 and FOO3:
#define FOO2(x,y) ...
#define FOO3(x,y,z) ...
I want to define a new macro FOO as follows:
#define FOO(x,y) FOO2(x,y)
#define FOO(x,y,z) FOO3(x,y,z)
But this doesn’t work because macros do not overload on number of arguments.
Without modifying FOO2 and FOO3, is there some way to define a macro FOO (using __VA_ARGS__ or otherwise) to get the same effect of dispatching FOO(x,y) to FOO2, and FOO(x,y,z) to FOO3?
Simple as:
So if you have these macros, they expand as described:
If you want a fourth one:
Naturally, if you define
FOO2,FOO3andFOO4, the output will be replaced by those of the defined macros.