comp.lang.ada
 help / color / mirror / Atom feed
From: mheaney@ni.net (Matthew Heaney)
Subject: Re: Pragma pack
Date: 1997/03/17
Date: 1997-03-17T00:00:00+00:00	[thread overview]
Message-ID: <mheaney-ya023680001703970133480001@news.ni.net> (raw)
In-Reply-To: 01IGC5R855Z6001KU2@EMAIL.AZ.HONEYWELL.COM


In article <01IGC5R855Z6001KU2@EMAIL.AZ.HONEYWELL.COM>, "C. Berg (602)
436-5290" <BERGC@ELLX.DECNET.AZ.HONEYWELL.COM> wrote:

>I have some questions for the list Ada gods regarding the use of
>pragma pack (this is from Ada '83 land).
>
>If you have a record similar to the following:
>
> type blah is record
>   field_1 : field_1_type;
>   field_2 : field_2_type;
>   <etc...>
> end record;
>
>What is the difference (to an individual record like this) between
>employing a pragma pack on this record alone, without packing its
>component fields, and not using a pack at all?  For example, will
>a variable declared to be of this record type be the exact same size
>with only the "highest" level pack as with no packs at all?

The idea is that pragma Pack remove the gaps between the components; it has
nothing to say about the components.

It's more clear thinking about a packed array: the gaps between the
components are "minimized," but the pragma has no effect on the components
themselves.  (You'll require separate representation clause for the array
components.)

If you're just optimizing for space, then you can pragma Pack the record. 
But if you require a specific representation, then you must use a
representation clause.

And of course, the use of pragma Pack definately _does_ affect the size of
the record.

(Note that in the case of a packed array of components whose size is 1, the
RM does guarantee that the bits occupy contiguous bit positions; ie there
are no gaps.  This is the only time when pragma Pack specifies a
represention.)

Matt

--------------------------------------------------------------------
Matthew Heaney
Software Development Consultant
<mailto:matthew_heaney@acm.org>
(818) 985-1271




  parent reply	other threads:[~1997-03-17  0:00 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1997-03-10  0:00 Pragma pack C. Berg (602) 436-5290
1997-03-11  0:00 ` Robert Dewar
1997-03-17  0:00 ` Matthew Heaney [this message]
1997-03-17  0:00   ` Robert Dewar
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox