В C (не С++/С#), как проверить, имеет ли переменная определенный тип?
Например, что-то вроде этого:
double doubleVar;
if( typeof(doubleVar) == double ) {
printf("doubleVar is of type double!");
}
Или более общий: как сравнить два типа, чтобы compare(double1,double2)
оценил значение true, а compare(int,double)
будет оцениваться как false. Также я хотел бы сравнить структуры другого состава.
В принципе, у меня есть функция, которая работает с переменными типа "struct a" и "struct b". Я хочу сделать одно с переменными "struct a", а другое с переменными "struct b". Так как C не поддерживает перегрузку, а указатель void
потеряет информацию о типе, мне нужно проверить тип. Кстати, какой смысл иметь оператор typeof
, если вы не можете сравнивать типы?
Метод sizeof кажется практическим решением для меня. Спасибо за вашу помощь. Мне все еще кажется, что это немного странно, поскольку типы известны во время компиляции, но если я представляю процессы на машине, которые я вижу, то почему информация не хранится в терминах типов, а скорее по размеру байта. Размер - это единственное, что действительно важно, кроме адресов.