comp.lang.ada
 help / color / mirror / Atom feed
From: Simon Wright <simon@pushface.org>
Subject: Re: C's sizeof
Date: Thu, 12 Apr 2012 21:29:03 +0100
Date: 2012-04-12T21:29:03+01:00	[thread overview]
Message-ID: <m2hawog0ds.fsf@pushface.org> (raw)
In-Reply-To: 11092332.346.1334257093663.JavaMail.geo-discussion-forums@ynhh34

Adam Beneschan <adam@irvine.com> writes:

> On Thursday, April 12, 2012 11:42:46 AM UTC-7, Simon Wright wrote:
>> Adam Beneschan writes:
>> 
>> > On Thursday, April 12, 2012 9:27:09 AM UTC-7, Simon Wright wrote:
>> >> The (draft) ARM Annex B.3[1] says at para 73 - Note 7 -
>> >> 
>> >>     "To obtain the effect of C's sizeof(item_type), where Item_Type is
>> >>     the corresponding Ada type, evaluate the expression:
>> >>     size_t(Item_Type'Size/CHAR_BIT)."
>> >> 
>> >> Should that not be
>> >> 
>> >>     size_t((Item_Type'Size + CHAR_BIT - 1)/CHAR_BIT)
>> >> 
>> >> ?
>> >> 
>> >> [1] http://www.ada-auth.org/standards/12rm/html/RM-B-3.html
>> >
>> > Does C even support types whose sizes aren't a multiple of a byte?  If
>> > it doesn't, then since B.3 is talking about the Ada type
>> > "corresponding" to a C type, the question is probably moot.
>> 
>> Doesn't B.3 apply to types with Convention => C?
>> 
>> GNAT allows
>> 
>>    type N2 is range 0 .. Integer'Last - 1;
>>    pragma Convention (C, N2);
>> 
>> and N2'Size is 31 ...
>
> Yeah, you're right.  But then I don't think your formula would work
> either:
>
>    type N3 is range 0 .. 2**22 - 1;
>    pragma Convention (C, N3);
>
> and N3'Size is 22.  But what would the sizeof() of the C type be?

Hmm, not 3 I suspect (and not 2, either, which the ARM formula would
give).

Perhaps the compiler should make 'Size be 8, 16, 32, 64 ... if the
convention implies it? but cf the K.2(225) definition of 'Size as [the
size (in bits) that the implementation would choose for] a record
component of [the subtype] when the record type is packed; and the fact
that C does support struct components of non-byte-multiple sizes.

Is sizeof more like the missing 'Object_Size attribute?

GNAT makes 'Stream_Size 4 for both N2 and N3.



  reply	other threads:[~2012-04-12 20:29 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-12 16:27 C's sizeof Simon Wright
2012-04-12 16:43 ` Adam Beneschan
2012-04-12 18:42   ` Simon Wright
2012-04-12 18:58     ` Adam Beneschan
2012-04-12 20:29       ` Simon Wright [this message]
2012-04-12 20:59       ` Jeffrey Carter
2012-04-12 22:24 ` Robert A Duff
2012-04-13  5:57   ` Simon Wright
replies disabled

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