/* This works. */
#define foo(a) (a)
#define bar two,words
foo(bar)
/* So does this. */
#define foo2(a,b) (a separate b)
#define foo2_wrap(a) foo2(a)
foo2_wrap(bar)
/* But this generates an error. */
#define foo_wrap(a) foo(a)
foo_wrap(bar)
/* Adding parentheses to foo_wrap fixes it. */
#define foo_wrap_parens(a) foo((a))
foo_wrap_parens(bar)
/* As does adding parentheses to bar */
#define bar_parens (two,words)
foo_wrap(bar_parens)
foo_wrap_parens(bar_parens)