You haven't factored out all duplication yet. All that distinguishes these bodies is the function name; you can move `{ return` and `(a); }` into the macro.