In message <[EMAIL PROTECTED]> "Jacques A. Vidrine" writes:
: Likewise if the first member were a more complex data type, but
: nevertheless the same between the different structures.
: 
: It seems safe to me, but I can't explain why :-)

It is obfuscated 'C', but it is safe.  The standard requires that
(void *) &foo == (void *) &foo->s and that if s were a complex
structure that it be laid out the same in all instances of s.  So I
think that it is "safe" to do that.

There are times that you'd want to do this (like generic list
routines), but such type punning, as this is known, is error prone and
can lead to problems.  It is best avoided in favor of macros, unions
or some other less error prone technique.

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to