#include <stdio.h>
#define print_ptr(x) _Generic((*x), \
							  char: printf("%c\n", *(char *)x), \
							  int: printf("%d\n", *(int *)x), \
							  short: printf("%hi\n", *(short *)x), \
							  float: printf("%f\n", *(float *)x), \
							  double: printf("%lf\n", *(double *)x), \
	default: printf("error"))
int main(int argc, char *argv[])
{
	char c = 'a';
	int n = 10;
	print_ptr(&c);
	print_ptr(&n);
	void *ptr = &c;
	print_ptr(ptr);
    return 0;
}