#define SQUARE(X) (X)*(X) #define JOIN(X,Y) X##Y #define JOIN_STRING(X,Y) X#Y #include int main() { int x1 = 2, y1; float x2 = 3.14, y2; const char *str_x1 = JOIN_STRING("x",1); const char *str_x2 = JOIN_STRING("x",2); y1 = SQUARE(x1); y2 = SQUARE(x2); y2 = JOIN(x,1) + JOIN(x,2); printf("%s + %s = %f\n", str_x1, str_x2, y2); return 0; }