delorie.com/archives/browse.cgi | search |
Message-ID: | <3F04C1B6.9E036018@somewhere.nil> |
Date: | Fri, 04 Jul 2003 01:52:22 +0200 |
From: | Gautier Write-only <gautier AT somewhere DOT nil> |
X-Mailer: | Mozilla 4.8 [en] (Windows NT 5.0; U) |
X-Accept-Language: | en |
MIME-Version: | 1.0 |
Newsgroups: | comp.os.msdos.djgpp |
Subject: | Re: data alignment issue |
References: | <00A224F4 DOT 86EC817C DOT 6 AT st DOT fmph DOT uniba DOT sk> |
NNTP-Posting-Host: | 80.218.92.120 |
X-Trace: | news.swissonline.ch 1057276351 80.218.92.120 (4 Jul 2003 01:52:31 +0200) |
Lines: | 47 |
X-Complaints-To: | abuse AT swissonline DOT ch |
To: | djgpp AT delorie DOT com |
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
Reply-To: | djgpp AT delorie DOT com |
Viktor DOT Stujber AT st DOT fmph DOT uniba DOT sk: > I've noticed that djgpp aligns all members of a structure to 4 bytes. Not necessarily (see below). > --------------------------------------------------------------------- > | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | > ---------------------------------------------------- > | a _ _ _ b b b b c c _ _ | > ---------------------------------------------------- > > this is the layout of this structure in memory: > struct { > BYTE a; > DWORD b; > WORD c; > } with Interfaces; use Interfaces; with Ada.Integer_Text_IO; use Ada.Integer_Text_IO; procedure Align is type r1 is record a: Unsigned_8; -- 1 b: Unsigned_32; -- 4 c: Unsigned_16; -- 2 end record; type r2 is record a: Unsigned_8; -- 1 b: Unsigned_32; -- 4 c: Unsigned_16; -- 2 end record; pragma pack(r2); begin Put(r1'size/8); Put(r2'size/8); end; DJGPP takes 10 bytes for r1 (choice) and 7 for r2 (it must, because of "pack"). ________________________________________________________ Gautier -- http://www.mysunrise.ch/users/gdm/gsoft.htm NB: For a direct answer, e-mail address on the Web site!
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |