invalidCmdArg() is now a macro