improve macro parameter handling