🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.lang.c
Article #15526

Re: alignements struct/tableaux

#15526
From: Harpo
Date: Sun, 18 Sep 2005 06:52
58 lines
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-mail
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>

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