101e04c3fSmrg/* This works. */ 201e04c3fSmrg#define foo(a) (a) 301e04c3fSmrg#define bar two,words 401e04c3fSmrgfoo(bar) 501e04c3fSmrg 601e04c3fSmrg/* So does this. */ 701e04c3fSmrg#define foo2(a,b) (a separate b) 801e04c3fSmrg#define foo2_wrap(a) foo2(a) 901e04c3fSmrgfoo2_wrap(bar) 1001e04c3fSmrg 1101e04c3fSmrg/* But this generates an error. */ 1201e04c3fSmrg#define foo_wrap(a) foo(a) 1301e04c3fSmrgfoo_wrap(bar) 1401e04c3fSmrg 1501e04c3fSmrg/* Adding parentheses to foo_wrap fixes it. */ 1601e04c3fSmrg#define foo_wrap_parens(a) foo((a)) 1701e04c3fSmrgfoo_wrap_parens(bar) 1801e04c3fSmrg 1901e04c3fSmrg/* As does adding parentheses to bar */ 2001e04c3fSmrg#define bar_parens (two,words) 2101e04c3fSmrgfoo_wrap(bar_parens) 2201e04c3fSmrgfoo_wrap_parens(bar_parens) 2301e04c3fSmrg 2401e04c3fSmrg 25