#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;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIHBybihhKSBfR2VuZXJpYygoYSlcCgksaW50OnByaW50ZigiaW50IC0gJWRcbiIsKGEpKVwKCSxmbG9hdDpwcmludGYoImZsb2F0IC0gJWZcbiIsKGEpKVwKCSxjb25zdCBjaGFyKjpwcmludGYoImludCAtICVzXG4iLChhKSlcCgksdmVjOihwcmludGYoInZlYyAtICIpLHZlY19wcm4oJihhKSkscHJpbnRmKCJcbiIpKVwKCSkKCnR5cGVkZWYgc3RydWN0IHZlY3sKZmxvYXQgeCx5LHo7Cn0gdmVjOwp2b2lkIHZlY19wcm4odmVjKiB4KXsKCXByaW50ZigiJWYgJWYgJWYiLHgtPngseC0+eSx4LT56KTsKfQoKaW50IG1haW4oKQp7CglpbnQgYT0zOwoJZmxvYXQgeD0yLjRmOwoJY29uc3QgY2hhciogc3RyPSIxMjMiOwoJdmVjIG11PXsueD05LC55PS00LC56PTAuMDF9OwoKCXBybihhKTsKCXBybih4KTsKCXBybihzdHIpOwoJcHJuKG11KTsKCiAgIHJldHVybiAwOwp9Cg==