Article View: be.comp.programming
Article #15348Re: probleem met structuur
From: Frans Bouma
Date: Mon, 16 Oct 2000 00:00
Date: Mon, 16 Oct 2000 00:00
47 lines
3212 bytes
3212 bytes
"KLinZ" <klinz@NOSPAMhetnet.nl> wrote in message news:yXEG5.22824$Z7.395483@nlnews00.chello.com...
> Nee, dit blijft 8 bytes omdat BYTE blijkbaar ook 4 bytes is. Maar als je dit
nee dat was mijn fout. BYTE is 1 byte. BOOL is wel 4 bytes (long), om
onverklaarbare reden.
> doet
>
> typedef struct {
> unsigned char var1;
> DWORD var2;
> } _test;
>
> kan deze struct ook 8 bytes groot zijn. Er kunnen nl. 3 padding bytes
> toegevoegd worden achter de unsigned char. Zodat var2 op een dword-aligned
> boundary terecht komt.
nee, althans niet in VC++. Je moet vziw specifiek aangeven dat je packing
aanzet en dus offsets gebruiken wilt bij de boundaries van structure members
(met compiler optie /Zp[n], n is hoeveelheid bytes)
> > 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)? Is dit ANSI C (werkt het ook op een andere processor dan
> > Intel-compatible)? Hoe is dit te rijmen met het antwoord van FB, die zegt
> > dat een byte is gedefd als een int? Wordt er gewoon een byte van die int
> > afgehakt?
> >
>
> Ik wist niet dat in msvc BYTE gedefinieerd was als int, ik nam aan dat BYTE
doet hetook niet *(#&$@($@ :) mijn fout.
> gewoon een unsigned char was. Nee, die #pragma is erg compiler specifiek. In
> Ansi C is het volgens mij (maar daar zou je de standaard op na moeten
> slaan) toegestaan dat de compiler padding bytes toevoegd in structs. Met die
> #pragma kun je dus aangeven dat je dat niet wilt. Dit zijn trouwens dingen
> waar je niet veel mee te maken heb als je begint met C/C++. Dat msvc BYTE
> als int definieert is natuurlijk op z'n minst verwarrend te noemen.
het is een byte.
BOOL is wel een long, wat volgens mij wel problemen oplevert, maar
sowieso is het porten van code met structures een hell, bv het
porten van VC++ code naar gcc, als je beide executables dezelfde data
formats wilt laten lezen/schrijven.
FB
Technical Details
Message-ID:
<8sfaeo$rtq$1@news1.xs4all.nl>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> <yXEG5.22824$Z7.395483@nlnews00.chello.com>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: "Frans Bouma" <perseus@xs4all.nl> Subject: Re: probleem met structuur Date: 2000/10/16 Message-ID: <8sfaeo$rtq$1@news1.xs4all.nl> X-Deja-AN: 682114788 Content-Transfer-Encoding: 7bit Sender: perseus@11dyn31.dh.casema.net 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> <yXEG5.22824$Z7.395483@nlnews00.chello.com> X-Priority: 3 Content-Type: text/plain; charset="Windows-1252" X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 X-Complaints-To: abuse@xs4all.nl X-Trace: news1.xs4all.nl 971713816 28602 212.64.56.31 (16 Oct 2000 16:30:16 GMT) Organization: Solutions Design X-MSMail-Priority: Normal Mime-Version: 1.0 Reply-To: "Frans Bouma" <perseus@xs4all.nl> NNTP-Posting-Date: 16 Oct 2000 16:30:16 GMT Newsgroups: be.comp.programming,nl.comp.programmeren