Xref: news2.mv.net comp.os.msdos.djgpp:7623 From: "John M. Aldrich" Newsgroups: comp.os.msdos.djgpp Subject: Re: What am i doing wrong? Date: Sun, 18 Aug 1996 21:53:53 -0700 Organization: Three pounds of chaos and a pinch of salt Lines: 27 Message-ID: <3217F361.3C2@cs.com> References: <199608181702 DOT AA28727 AT mail DOT umu DOT se> NNTP-Posting-Host: ppp222.cs.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: Andreas Vernersson DJ-Gateway: from newsgroup comp.os.msdos.djgpp Andreas Vernersson wrote: > > Could anyone explain this?[snip] > I only wants the datastructure to be 2+1=3 bytes... DJGPP is a 32-bit compiler, which means it uses 32-bit ints. So your structure (packed) is 4 bytes for the int plus 1 byte for the char = 5 bytes. Unpacked, the structure is padded to a multiple of 4, for a total of 8 bytes. If you want the struct to be 3 bytes, simply use a short instead of an int. Before you complain, the ANSI spec only says that sizeof(short)<=sizeof(int)<=sizeof(long). Beyond that it's up to the compiler. It's bad programming to depend on an int being any particular size. -- John M. Aldrich, aka Fighteer I -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS d- s+:- a-->? c++>$ U@>++$ p>+ L>++ E>+ W+>++ N++ o+ K? w(---) O- M-- V? PS+ PE Y+ PGP- t+(-) 5- X- R+ tv+() b+++ DI++ D++ G e(*)>++++ h!() !r !y+() ------END GEEK CODE BLOCK------