Skip to main content
edited tags
Link
AstroCB
  • 12.4k
  • 20
  • 59
  • 75
Question Protected by Potatoswatter
Source Link
Andrew Tomazos
  • 69.3k
  • 46
  • 208
  • 348

Overloading Macro on Number of Arguments

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?