Article View: es.comp.os.linux.programacion
Article #12921Re: Asignar a estructura entero
From: Ignacio Arenaza
Date: Sat, 05 May 2001 20:50
Date: Sat, 05 May 2001 20:50
51 lines
2489 bytes
2489 bytes
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
>>>>> "mangel" == mangel <migarroi@eui.upv.es> writes:
mangel> Pero al gcc no le parece nada bien. �Sabeis si hay alguna
mangel> forma de hacerlo? (o me va a tocar jugar con mascaras, a
mangel> lo clasico, para obtener el valor de cada bit?).
Existe una forma a base de uniones, pero hay que garantizar que gcc te
empaqueta las estructuras de forma contigua (pragma pack o algo asi),
que la estructura va a ser empaquetada en exactamente 8 bits, que los
ints ocupan exactamente 32 bits y ademas solo funciona en aquitecturas
little-endian como el i386 (o big-endian si se quiere con una ligera
modificacion, pero no en ambas a la vez).
Con uniones se puede con:
union int2struct {
struct StatePort{
unsigned :4;
unsigned res4:1;
unsigned res3:1;
unsigned res1:1;
unsigned nores2:1;
} estado[4];
int nEstado;
} mi_union;
mi_union.nEstado = nEstado;
mi_union.estado[0].res4 = 0;
kk = mi_union.estado[0].nores2;
...
Como ves mucho lio para poca ganancia, ademas de un monton de
condicionantes que no existen en la version con mascaras. Creo que la
eleccion esta clara ;-)
Saludos. I�aki.
- --
Get PGP/GPG Keys at http://www.escomposlinux.org/iarenaza/pgpkey.html
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.4 (GNU/Linux)
Comment: Processed by Mailcrypt and GPG
iD8DBQE69GeyZXLnGT1HLgcRAjgAAJ9lGxlWNrRxeZdbGiS2Wb7+U2NFggCeMyG/
hsZanhlZR6bu7z78IKpRdl4=
=dSSO
-----END PGP SIGNATURE-----
Technical Details
Message-ID:
<873dajh64t.fsf@eb2ebu.ampr.org>Path:
arc1-ca.pugleaf.net!newsfeed.google.com!newsfeed.stanford.edu!skynet.be!fu-berlin.de!newsfeed.bcn.ttd.net!news.bcn.ttd.net!not-for-mailReferences:
<3AF365B9.A0780DAF@eui.upv.es>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,5fd398f4a9723437 X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2001-05-06 15:12:26 PST Path: arc1-ca.pugleaf.net!newsfeed.google.com!newsfeed.stanford.edu!skynet.be!fu-berlin.de!newsfeed.bcn.ttd.net!news.bcn.ttd.net!not-for-mail From: Ignacio Arenaza <iarenaza@eb2ebu.ampr.org> Newsgroups: es.comp.os.linux.programacion Subject: Re: Asignar a estructura entero Date: 05 May 2001 22:50:58 +0200 Organization: Servidor NNTP de eb2ebu.ampr.org Lines: 51 Message-ID: <873dajh64t.fsf@eb2ebu.ampr.org> References: <3AF365B9.A0780DAF@eui.upv.es> NNTP-Posting-Host: 213.96.129.167 Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit User-Agent: Gnus/5.0808 (Gnus v5.8.8) Emacs/20.7