Article View: fr.comp.lang.c
Article #15526Re: alignements struct/tableaux
From: Harpo
Date: Sun, 18 Sep 2005 06:52
Date: Sun, 18 Sep 2005 06:52
58 lines
3166 bytes
3166 bytes
Pierre Habouzit wrote:
Merci pour l'explication, je crois avoir compris jusqu'ici.
> mais du coup, vu que je ne peux garantir que scratch coincide avec la
> deuxi�me case du tablea __bufs, je me suis r�sign� � avoir comme type
> pour mes messages :
>
> struct message {
> [ ... pleins de choses dont pas mal de 'headers' ...];
Je ne comprends plus � partir d'ici.
> struct {
> const blob_t *original;
> blob_t *scratch;
> };
Pourquoi garder la structure au dessus, et -peut-�tre suis-je mal
r�veill�- comment y acc�der sans la nommer ?
> blob_t *__bufs[2];
>
> [ ... encore pleins de choses ...];
> };
>
> ce qui me force � maintenir l'invariant __bufs[0] == original et
> __bufs[1]==scratch � la main, mais vu que ces pointeurs changent peu,
> c'est pas trop g�nant pour moi, et autant je ne voulais pas perdre la
> taille d'un pointeur en plus dans mes headers vu que j'en ai beaucoup
> et que j'avais d�j� des champs de bits, mais perdre 16 octets dans la
> structure de message n'est pas trop g�nant. (enfin 16 ou plutot
> sizof(blob_t*)*2)
Ou 8 suivant la taille du pointeur.
Mais je n'en vois pas l'inter�t.
Pourquoi cela au-dessous ne suffirait-il pas ? :
struct message {
[ ... pleins de choses dont pas mal de 'headers' ...];
blob_t *__bufs[2];
[ ... encore pleins de choses ...];
};
d'autant que la valeur du bit modified est l'indice du blob_t * et que
son nom est judicieusement choisi, �tant � 0 lorsque le blob_t n'est
pas modifi�.
De plus, je ne vois pas l'int�r�t d'�loigner le bit modified du tableau
de pointeurs en le mettant dans un (ou des) header, puisque le fait que
le buffer soit modifi� semble d�pendre du message et non de ces
headers.
Mais je n'ai peut-�tre pas tout compris.
Je me sers assez peu des unions, seulement lorsque des choses qui n'ont
a priori pas grand chose � voir entre elles peuvent occuper un m�me
espace du fait qu'elles ne peuvent �tre pr�sentes en m�me temps.
Technical Details
Message-ID:
<432d0eca$0$5402$8fcfb975@news.wanadoo.fr>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!newshub.sdsu.edu!newsfeed.news2me.com!newsfeed.icl.net!proxad.net!freenix!news.wanadoo.fr!news.wanadoo.fr!not-for-mailReferences:
<432c52d5$0$9425$626a14ce@news.free.fr> <mn.8cb87d59c7031bee.15512@YOURBRAnoos.fr> <432c688a$0$14382$626a14ce@news.free.fr> <432c6c63$0$17061$8fcfb975@news.wanadoo.fr> <432c77ed$0$12670$626a14ce@news.free.fr>Show Full Headers
Complete Article Headers
X-Google-Thread: f9822,2ab126dba8e5e645 X-Google-Attributes: gidf9822,public X-Google-Language: FRENCH,ASCII Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!newshub.sdsu.edu!newsfeed.news2me.com!newsfeed.icl.net!proxad.net!freenix!news.wanadoo.fr!news.wanadoo.fr!not-for-mail Message-ID: <432d0eca$0$5402$8fcfb975@news.wanadoo.fr> From: Harpo <trashcan@hotmail.com> Subject: Re: alignements struct/tableaux Newsgroups: fr.comp.lang.c Date: Sun, 18 Sep 2005 08:52:34 +0200 References: <432c52d5$0$9425$626a14ce@news.free.fr> <mn.8cb87d59c7031bee.15512@YOURBRAnoos.fr> <432c688a$0$14382$626a14ce@news.free.fr> <432c6c63$0$17061$8fcfb975@news.wanadoo.fr> <432c77ed$0$12670$626a14ce@news.free.fr> Organization: ARG (Association pour la Rehabilitation du Goto) User-Agent: KNode/0.8.2 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8Bit Lines: 59 NNTP-Posting-Date: 18 Sep 2005 08:52:58 CEST NNTP-Posting-Host: 83.195.120.205 X-Trace: 1127026378 news.wanadoo.fr 5402 83.195.120.205:44514 X-Complaints-To: abuse@wanadoo.fr