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