#define SQUARE(X) (X)*(X)
#define JOIN(X,Y) X##Y
#define JOIN_STRING(X,Y) X#Y

#include <stdio.h>

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