В C (не C ++ / 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 кажется мне практическим обходным решением. Спасибо за вашу помощь. Я все еще нахожу это немного странным, поскольку типы известны во время компиляции, но если я представлю себе процессы в машине, я могу понять, почему информация хранится не с точки зрения типов, а с точки зрения размера байта. Размер - единственное, что действительно важно, помимо адресов.