#include <stdio.h>
#define CONCAT(S1,C,S2) ({ \
static const struct __attribute__ ((packed)) { \
char s1[sizeof (S1) - 1]; \
char c; \
char s2[sizeof (S2)]; \
} _r = { (S1), (C), (S2) }; \
(const char *) &_r; \
})
int
main (void)
{
puts (CONCAT
("abc", 'd', "efg")); return 0;
}
ICAgICNpbmNsdWRlIDxzdGRpby5oPgoKICAgICNkZWZpbmUgQ09OQ0FUKFMxLEMsUzIpICh7IFwKICAgICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSB7IFwKICAgICAgICAgIGNoYXIgczFbc2l6ZW9mIChTMSkgLSAxXTsgXAogICAgICAgICAgY2hhciBjOyBcCiAgICAgICAgICBjaGFyIHMyW3NpemVvZiAoUzIpXTsgXAogICAgICAgIH0gX3IgPSB7IChTMSksIChDKSwgKFMyKSB9OyBcCiAgICAgICAgKGNvbnN0IGNoYXIgKikgJl9yOyBcCiAgICB9KQoKICAgIGludAogICAgbWFpbiAodm9pZCkKICAgIHsKICAgICAgcHV0cyAoQ09OQ0FUICgiYWJjIiwgJ2QnLCAiZWZnIikpOwogICAgICByZXR1cm4gMDsKICAgIH0=