#define SECOND(a, b, ...) b #define IS_PROBE(...) SECOND(__VA_ARGS__, 0) #define PROBE() ~, 1 #define NOT(x) IS_PROBE(_NOT_ ## x) #define _NOT_0 PROBE() Should be 1: NOT(0) Should be 0: NOT(1) Should be 0: NOT(not zero) Should be 0: NOT()