From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,f752883594af27e3 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2002-04-25 18:52:06 PST Path: archiver1.google.com!postnews1.google.com!not-for-mail From: dewar@gnat.com (Robert Dewar) Newsgroups: comp.lang.ada Subject: Re: pragma pack in external packages Date: 25 Apr 2002 18:52:06 -0700 Organization: http://groups.google.com/ Message-ID: <5ee5b646.0204251752.1aa1bccb@posting.google.com> References: NNTP-Posting-Host: 205.232.38.14 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Trace: posting.google.com 1019785926 22859 127.0.0.1 (26 Apr 2002 01:52:06 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: 26 Apr 2002 01:52:06 GMT Xref: archiver1.google.com comp.lang.ada:23127 Date: 2002-04-26T01:52:06+00:00 List-Id: robert_s_quinn@yahoo.com (Robert Quinn) wrote in message news:... > Suppose I have an array of bits: > > package definitions is > > ONE_BIT_TYPE is range 0..1; > for ONE_BIT_TYPE'SIZE use 1 > > 5_BIT_ARRAY_TYPE is array (1..5) of ONE_BIT; > pragma pack (5_BIT_ARRAY_TYPE); > > end definitions; > > It seems like my 5 bit array should now refer to 5 > consecutive bits. > But now if I try to use this array in a record in an > external package, > I get an error: > > package more_definitions is > > type my_record is record > IMPORTANT_5_BIT_ARRAY : definitions.5_BIT_ARRAY_TYPE; > end record > > pragma pack(my_record); > > for my_record use record > IMPORTANT_5_BIT_ARRAY at 0 range 0 .. 4; > end record; > > end more_definitions; > > after compile I get: > ERROR: size for IMPORTANT_5_BIT_ARRAY too small, minimum > allowed is 40 I am willing to bet you do NOT get this message if you compile the above code, which probably comes close to the record, even on CLA, for junk syntax errors per line. Among the errors are: missing type keywords identifiers starting with digits undefined identifiers missing semicolons Any reasonable correction of this mess will compile just fine. It is really important to post *EXACTLY* the code you tried, not some distressingly inaccurate memory of it! > > Note that I don't get this error if I move the record declaration > INTERNAL to the package where the array type is defined. Only when I > use the array type in an external package does the compiler decide I > need a whole BYTE for each BIT of data! > > Any ideas? > Thanks, > Robert Quinn > > Note that I don't do any low-level programming in my job (is this what > you low level programmers do a lot of?), this is just a hobby.