Article View: be.comp.programming
Article #15347Re: probleem met structuur
From: Wim Dumon
Date: Mon, 16 Oct 2000 00:00
Date: Mon, 16 Oct 2000 00:00
58 lines
2827 bytes
2827 bytes
Matthijs wrote:
>
> According to Scorpion,
> > > > Ik heb volgende structuur:
> > > >
> > > > typedef struct {
> > > > BYTE var1;
> > > > DWORD var2;
> > > > } _test;
>
> [is 8 bytes ipv 5]
>
> [is wel 5 bytes door:]
> > > #pragma pack(push)
> > > #pragma pack(1)
> > >
> > > typedef struct {
> > > BYTE var1;
> > > DWORD var2;
> > > } _test;
> > >
> > > #pragma pack(pop)
>
> Mede door deze "onzin"(IMHO) denk ik er voorlopig niet aan om met C/C++
> te beginnen. Waar slaat dit nou in hemelsnaam op(bij C/C++, niet jouw
> antwoord)?
Alignment is een eis die door de processor waarvoor je compileert
opgelegd wordt. C en C++ compilers zorgen er door padding bytes toe te
voegen voor dat je programma efficient runt op dergelijke processoren.
De toegevoegde bytes verschillen van processor tot processor (en
mogelijks van compiler tot compiler). Of je nu pascal, assembler, java,
of iets anders compileert: alignment moet altijd gebeuren om een
efficient programma te krijgen.
> Is dit ANSI C (werkt het ook op een andere processor dan Intel-compatible)?
Ja, dit mag (moet) volgens de ANSI standaard.
Ja, ook op andere processoren gebeurt dit.
> Hoe is dit te rijmen met het antwoord van FB, die zegt
> dat een byte is gedefd als een int?
AFAIK is BYTE niet door ANSI gestandardiseerd en bijgevolg kan je gelijk
wat BYTE noemen. Een int BYTE noemen is IMHO niet heel katholiek :-)
> Wordt er gewoon een byte van die int afgehakt?
>
Als BYTE een typedef (of define) voor int is, is BYTE een int.
Als BYTE een typedef (of define) voor char is, dan is BYTE een char.
Maar een char is (volgens ANSI) niet perse 8 bit.
Waarom maak je je zorgen om de grootte en de layout van je struct ?
Compilers zijn doorgaans de best geplaatste tools om daarover te
beslissen...
Groetjes,
Wim.
Technical Details
Message-ID:
<39EB29AF.8AEC6FA7@easics.be>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<UljG5.29720$s31.471928@afrodite.telenet-ops.be> <3MlG5.19859$Z7.336199@nlnews00.chello.com> <A9mG5.31247$s31.493710@afrodite.telenet-ops.be> <MPG.14552ffc56413268989718@news.xs4all.nl>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: 107324,f57e95232f06f286 X-Google-Attributes: gid107324,public X-Google-Thread: fcea4,f57e95232f06f286 X-Google-Attributes: gidfcea4,public From: Wim Dumon <wim@easics.be> Subject: Re: probleem met structuur Date: 2000/10/16 Message-ID: <39EB29AF.8AEC6FA7@easics.be> X-Deja-AN: 682109139 Content-Transfer-Encoding: 7bit References: <UljG5.29720$s31.471928@afrodite.telenet-ops.be> <3MlG5.19859$Z7.336199@nlnews00.chello.com> <A9mG5.31247$s31.493710@afrodite.telenet-ops.be> <MPG.14552ffc56413268989718@news.xs4all.nl> X-Accept-Language: en Content-Type: text/plain; charset=us-ascii X-Complaints-To: abuse@Belgium.EU.net X-Trace: nreader1.kpnqwest.net 971712947 193.74.198.7 (Mon, 16 Oct 2000 18:15:47 MET DST) Organization: Easics nv, Leuven, Belgium, http://www.easics.com MIME-Version: 1.0 NNTP-Posting-Date: Mon, 16 Oct 2000 18:15:47 MET DST Newsgroups: be.comp.programming,nl.comp.programmeren