Как проверить, имеет ли переменная определенный тип (сравните два типа) в C?

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

53
задан Peter Mortensen 11 November 2017 в 03:19
поделиться