Вы можете добавить поле в структуру, указывающее, какой член объединения в настоящее время является действительным. Простой пример:
union int_or_float
{
int int_member;
float float_member;
};
struct node
{
union int_or_float data;
bool int_is_valid;
struct node *next;
};
(Предполагается, что у вас есть #include <stdbool.h>
.)
Обратите внимание, что все зависит от вас, чтобы значение int_is_valid
соответствовало последнему сохраненному вами значению, а также извлекать int_member
, только если int_is_valid
имеет значение true, и извлекать float_member
, только если int_is_valid
ложно.
На практике было бы яснее использовать enum
, а не bool
.