Notes on the ANSI standard
Henry Spencer
henry at utzoo.UUCP
Sun Oct 21 11:43:23 AEST 1984
> Section 4.1.3 states:
>
> "With one exception, a member of a union object may not be
> inspected unless the value of the object has been assigned
> using that same member."
>
> HOLY <censored>!! Whatever happened to overlaying values of differing
> types? One of the more handy uses of unions is overlaying bitfields
> with an integer so that the bits can be twiddled individually, but the
> integer can be used for block operations on all the bits. I've also
> used similar techniques for decoding bit fields of devices like a
> Summagraphic Bitpad, or several mouses.
Unions were intended as a storage-allocation-control mechanism, not as
a way to do type cheating. The orthodox way to do the latter is casts.
Incidentally, using integers and bit operations (yes, I know it's ugly)
is probably more portable than bitfields. Believe it or not. Partly
because a good many compilers botch bitfields, partly because things
like the bit allocation of bitfields are very compiler-dependent.
--
Henry Spencer @ U of Toronto Zoology
{allegra,ihnp4,linus,decvax}!utzoo!henry
More information about the Comp.lang.c
mailing list