This will print "foo\nbar\n".

```
#include <stdio.h>

int main(void) {
#define STRINGX(a) #a
#define STRING(a) STRINGX(a)
#define FOO foo
#define FOO_STR STRING(FOO)
    printf("%s\n", FOO_STR);
#undef FOO
#define FOO bar
    printf("%s\n", FOO_STR);
    return 0;
}

```

However, suppose I wanted to save the definition of `FOO_STR`, regardless of subsequent re-definitions, "foo\nfoo\n"? Is it possible to get the macro expansion of to be immediately at the place of definition?

Edit: The reason I want to do this is I have a header that I include multiple times, passing macros as arguments; it would simplify testing if I could duplicate `FOO` at the first time I included it.