>>17 the pure C equivalent would be
something like
if(custom_switchA && !(custom_switchB^custom_switchC))
but any typo or number will be silently converted to
boolean expression (65&& !(0^3)), while the macros will error out with
"no match for pasting tokens x,y)" or syntax error
when you insert some extra operator in the arguments.