 #define GLUE(A,B) GLUE_I(A,B) #define GLUE_I(A,B) A##B #define SECOND(...) SECOND_I(__VA_ARGS__,,) #define SECOND_I(_,X,...) X #define SWITCH(PREFIX_,PATTERN_,DEFAULT_) SECOND(GLUE(PREFIX_,PATTERN_),DEFAULT_) 