fork download
  1. #include <stdio.h>
  2.  
  3. #define prn(a) _Generic((a)\
  4. ,int:printf("int - %d\n",(a))\
  5. ,float:printf("float - %f\n",(a))\
  6. ,const char*:printf("int - %s\n",(a))\
  7. ,vec:(printf("vec - "),vec_prn(&(a)),printf("\n"))\
  8. )
  9.  
  10. typedef struct vec{
  11. float x,y,z;
  12. } vec;
  13. void vec_prn(vec* x){
  14. printf("%f %f %f",x->x,x->y,x->z);
  15. }
  16.  
  17. int main()
  18. {
  19. int a=3;
  20. float x=2.4f;
  21. const char* str="123";
  22. vec mu={.x=9,.y=-4,.z=0.01};
  23.  
  24. prn(a);
  25. prn(x);
  26. prn(str);
  27. prn(mu);
  28.  
  29. return 0;
  30. }
  31.  
Success #stdin #stdout 0s 4540KB
stdin
Standard input is empty
stdout
int - 3
float - 2.400000
int - 123
vec - 9.000000 -4.000000 0.010000