#include <stdio.h>
#define fst(x, y) \
((struct { \
__typeof__(x) first; \
__typeof__(y) second; \
}) { \
.first = (x), \
.second = (y) \
}.first)
#define swap(x, y) \
((void)((x) = fst((y), \
(y) = (x))))
int main(void) {
char *x = "first", *y = "second";
swap(x, y);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIGZzdCh4LCB5KSAgICAgICAgICAgICAgXAogICAgKChzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgXAogICAgICAgIF9fdHlwZW9mX18oeCkgZmlyc3Q7ICAgXAogICAgICAgIF9fdHlwZW9mX18oeSkgc2Vjb25kOyAgXAogICAgfSkgeyAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgIC5maXJzdCA9ICh4KSwgICAgICAgICAgXAogICAgICAgIC5zZWNvbmQgPSAoeSkgICAgICAgICAgXAogICAgfS5maXJzdCkKCiNkZWZpbmUgc3dhcCh4LCB5KSAgICAgICAgIFwKICAgICgodm9pZCkoKHgpID0gZnN0KCh5KSwgXAogICAgICAgICAgICAgICAgICAgICAgKHkpID0gKHgpKSkpCgppbnQgbWFpbih2b2lkKSB7CgljaGFyICp4ID0gImZpcnN0IiwgKnkgPSAic2Vjb25kIjsKCXN3YXAoeCwgeSk7CglwcmludGYoIiVzICVzXG4iLCB4LCB5KTsKCXJldHVybiAwOwp9Cg==