Union tutorial
#include <stdlib.h>
union urecord_t
{
char c;
short s;
long l;
};
struct record_t
{
int type;
#define RTYPE_CHAR 0
#define RTYPE_SHORT 1
#define RTYPE_LONG 2
urecord_t u;
};
bool is_negative(record_t *r)
{
switch ( r->type )
{
case RTYPE_CHAR: return r->u.c < 0;
case RTYPE_SHORT: return r->u.s < 0;
case RTYPE_LONG: return r->u.l < 0;
}
abort();
}


Last updated
Was this helpful?
