#include <stdio.h>

#define prn(a) _Generic((a)\
	,int:printf("int - %d\n",(a))\
	,float:printf("float - %f\n",(a))\
	,const char*:printf("int - %s\n",(a))\
	,vec:(printf("vec - "),vec_prn(&(a)),printf("\n"))\
	)

typedef struct vec{
float x,y,z;
} vec;
void vec_prn(vec* x){
	printf("%f %f %f",x->x,x->y,x->z);
}

int main()
{
	int a=3;
	float x=2.4f;
	const char* str="123";
	vec mu={.x=9,.y=-4,.z=0.01};

	prn(a);
	prn(x);
	prn(str);
	prn(mu);

   return 0;
}
