Notes on the ANSI standard

Joe Mueller joemu at tekecs.UUCP
Tue Oct 30 08:13:29 AEST 1984


> (2)
> 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.
> 
> I will grant that this is not good practice for writing portable code.
> But to have these practices forbidden or enforced by the compiler is
> totally unreasonable, especially for a systems implementation
> language!  (In implementation, enforcing this restriction seems
> pretty cumbersome.)

The problem with overlaying values of differing types to twiddle bits
is that the twiddling is VERY implementation dependent. The intent of
the committee is that the use of such practice should be discourageed
and the result of such operation is UNDEFINED. I shall take it up with
the committee to put words to that effect in the standard so that it
is not expessly forbidden.



More information about the Comp.lang.c mailing list