🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #15347

Re: probleem met structuur

#15347
From: Wim Dumon
Date: Mon, 16 Oct 2000 00:00
58 lines
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-mail
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>

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