macros with arguments, e.g. switch