Is there a way in gcc/g++ 4.* to write a macro that expands into several lines?
The following code:
#define A X \ Y
Expands into
X Y
I need a macro expanding into
X
Y
Is there a way in gcc/g++ 4.* to write a macro that expands into several lines?
The following code:
#define A X \ Y
Expands into
X Y
I need a macro expanding into
X
Y
I'm pretty sure CPP, being designed for C which doesn't care for newlines, and all, can't handle this kind of work. Still you can mark wanted newlines with some special marker string and pass the result through sed or awk to get what you want.
Why does the spacing matter?
The imake program used in (older?) builds of X11 used the C pre-processor to generate makefiles, but imake program used a special technique of indicating line endings with @@ symbols at the ends of lines, and then post-processed the output of the pre-processor to replace the @@ symbols with newlines.
From this design, I conclude that there is no reliable way to obtain newlines from expanded macros in C (or C++). Indeed, for C, there is no need since: