Нет, это невозможно.
C - статически типизированный язык без отражения. Имена типов не имеют никакого значения после стадии компиляции, и даже в том случае, когда какая-либо конкретная переменная вообще видна в двоичном коде, это не имеет никакого значения. Компилятор может свободно оптимизировать и переупорядочивать, если программа ведет себя , как описано в стандарте языка.
Вы можете попробовать магию препроцессора, чтобы получить ограниченный контроль над именами типов, но это далеко от общего размышления (и, строго говоря, за пределами языка C).
Принцип, который вы не можете сделать в C, заключается в следующем:
const char * tn = "int";
auto n = get_type(tn)(42); // a.k.a. "int n = 42;", NOT POSSIBLE
Имена типов не понятия времени выполнения; и, кроме того, статическая типизация делает невозможной такую конструкцию.
Вот одна из немногих уловок препроцессора, о которых я могу подумать:
#define print_size(t) printf("sizeof(" #t ") = %u\n", sizeof(t));
print_size(int);
print_size(long double);