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

Ответы на вопрос(10)

Ваш ответ на вопрос