У меня есть объединение и enum, например:
typedef union{
Home HomeInfo;
Office OfficeInfo;
} Info;
typedef enum{
eHOME,
eOFFICE
} InfoType;
Home
и Office
- это другие структуры.
У меня есть другая функция, прототип которой
void SetInfo(InfoType, Info);
Во время вызова функции, если InfoType
равно eHOME
, я бы создал объект Info, Info info;
и заполнил бы HomeInfo
details info.HomeInfo
и вызвал бы
SetInfo(eHONE, info);
SetInfoопределение:
SetInfo(InfoType infotype, Info info)
{
if (eHOME == infotype)
{
// get the details from info.HomeInfo structure
}
else if(eOFFICE == infotype)
{
// get the details from info.OffiiceInfo structure
}
}
Как получить недопустимый случай, если я передаю eHOME
как InfoType
и передаю данные OfficeInfo
?Хотя в то время я получал детали HomeInfo
, в нем есть ненужные значения, поэтому ошибка не появляется.Можно ли проверить, что это за структура после InfoType
проверки?