    #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;
    }