Mail Archives: djgpp/1999/08/03/21:16:22
From: | "Michael Stewart" <mike AT reggin DOT freeserve DOT co DOT uk>
|
Newsgroups: | comp.os.msdos.djgpp
|
Subject: | Re: what is _attribute_((packed)) ?? why DJGPP use it?
|
Date: | Tue, 3 Aug 1999 09:09:08 +0100
|
Organization: | (Posted via) Netcom Internet Ltd.
|
Message-ID: | <7o6831$4un$1@taliesin.netcom.net.uk>
|
References: | <7o5doq$gj8$1 AT nnrp1 DOT deja DOT com>
|
NNTP-Posting-Host: | hgty.capgemini.co.uk
|
X-Trace: | taliesin.netcom.net.uk 933667745 5079 194.42.240.2 (3 Aug 1999 08:09:05 GMT)
|
X-Complaints-To: | abuse AT corp DOT netcom DOT net DOT uk
|
NNTP-Posting-Date: | 3 Aug 1999 08:09:05 GMT
|
X-Newsreader: | Microsoft Outlook Express 4.72.3155.0
|
X-MimeOLE: | Produced By Microsoft MimeOLE V4.72.3155.0
|
Lines: | 29
|
To: | djgpp AT delorie DOT com
|
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp
|
Reply-To: | djgpp AT delorie DOT com
|
zidharta AT geocities DOT com wrote in message <7o5doq$gj8$1 AT nnrp1 DOT deja DOT com>...
>I was looking at this bitmap loader source code ... and I noticed that
>he used __attribute_((packed)) ... and I dont understand what is it...
>I ve been looking at my C library help file and I couldnt find anything
>about it ...
>
>if anyone can explain to me what that is and why DJGPP need it?.. is it
>has something to do with protected mode?..
Its all in the FAQ, heres an extract:
GCC generates 32-bit code, and in that mode, there is a significant penalty
(in terms of run-time performance) for unaligned accesses, like accessing a
16-bit short which isn't aligned on a word boundary, or accessing a 32-bit
int which isn't aligned on a dword boundary. To produce faster code, GCC
pads struct fields so that each field can be accessed without delays; this
sometimes produces struct size which is larger than the sum of the sizes of
its fields.
...
If the layout of the structure cannot be changed (e.g., when it must match
some external specification, like a block of data returned by some system
call), you can use the __attribute__((packed)) extension of GCC (See the Gcc
docs.) to prevent GCC from padding the structure fields; this will make
accesses to some of the fields slower.
- Raw text -