Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 04 Aug 1998 14:43:21 -0700
From:      Ted Faber <faber@ISI.EDU>
To:        Warner Losh <imp@village.org>
Cc:        Nicolas Souchu <Nicolas.Souchu@prism.uvsq.fr>, FreeBSD Hackers <freebsd-hackers@FreeBSD.ORG>
Subject:   Re: C and static initialization with unions 
Message-ID:  <199808042143.OAA15441@tnt.isi.edu>
In-Reply-To: Your message of "Tue, 04 Aug 1998 13:50:49 MDT." <199808041950.NAA18579@harmony.village.org> 

next in thread | previous in thread | raw e-mail | index | archive | help
-----BEGIN PGP SIGNED MESSAGE-----


Warner Losh wrote:
>In message <19980804185938.36803@breizh.prism.uvsq.fr> Nicolas Souchu writes:
>: static union foo_t bar = { (void *)&anyvar };
>: 
>: The compiler says "warning, making integer from pointer without a cast"...
>: Which is true and could lead to bad asm code.
>
>static union foo_t bar = { (int)(void *)&anyvar };
>
>But it is unwise to assume that sizeof(int) == sizeof(void *).

The comp.lang.c FAQ (http://www.eskimo.com/~scs/C-faq/top.html)
suggests putting the member he wants to initialize first in the union,
where a conformant ANSI C compiler will initialize it correctly.
(http://www.eskimo.com/~scs/C-faq/q2.20.html)

Initializing with that cast defeats the point of using a union at all.

Not that this belongs in hackers...

- ----------------------------------------------------------------------
Ted Faber                                                faber@isi.edu
USC/ISI Computer Scientist                   http://www.isi.edu/~faber
(310) 822-1511 x190      PGP Key: http://www.isi.edu/~faber/pubkey.asc



-----BEGIN PGP SIGNATURE-----
Version: 2.6.2

iQCVAwUBNceAeIb4eisfQ5rpAQFWIAQAsfm+uom56JCQN1Y16/Uhg2nYB5YpkbgN
51r1pYyVTtjkOTJawORnbYHdTPT/648ySX7WZFTXb9mJEook50Ue0YaesF83SlIN
n4SLsD9wPOMTNrzZZEXihecS9HTXfcWzaaeMfNhIlUycKc6O5DGScU0Hkq18UQvZ
2sNiG8qd1oE=
=cYvz
-----END PGP SIGNATURE-----

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199808042143.OAA15441>