int always 32 bits on all platforms?

AJ aj at nospam.net
Thu Oct 22 02:21:38 PDT 2009


"Chris Nicholson-Sauls" <ibisbasenji at gmail.com> wrote in message 
news:hbou95$1ald$1 at digitalmars.com...
> AJ wrote:
>> "Nick Sabalausky" <a at a.a> wrote in message 
>> news:hbonbp$to1$1 at digitalmars.com...
>>> "AJ" <aj at nospam.net> wrote in message 
>>> news:hboaeu$5sk$1 at digitalmars.com...
>>>> "BCS" <none at anon.com> wrote in message 
>>>> news:a6268ffbb0a8cc20817fe1f1c2 at news.digitalmars.com...
>>>>> Hello aJ,
>>>>>
>>>>>> I would think so. Anyway, what I find compelling about guaranteed
>>>>>> widths is the potential to eliminate alignment and padding issues
>>>>>> (that is, be able to control it with confidence across platforms as
>>>>>> one already can on a single platform via compiler pragmas or cmdline
>>>>>> switches).
>>>>>>
>>>>> Ah! I thought you were taking issue with something. D has that and 
>>>>> gets most of the porting stuff to work.
>>>>>
>>>> It does? Get this to work on "all" platforms:
>>>>
>>>> struct ABC
>>>> {
>>>>    byte a;
>>>>    int b; // may be improperly aligned on some platforms
>>>>    int64 c; // same issue
>>>> };
>>>>
>>>>
>>> // Guarantee packed on all platforms
>>> align() struct ABC
>>> {
>>>    byte a;
>>>    int b; // may be improperly aligned on some platforms
>>>    int64 c; // same issue
>>> };
>>
>> Well I can do the same thing with pragma or compiler switch in C++.  It 
>> doesn't mean that thing will work if 32-bit ints have to be aligned on 
>> 32-bit boundaries. While nice to have one syntax to do that, it doesn't 
>> fix the "problem" (which I haven't expressed correctly probably). What 
>> good is a packed structure that has misaligned data members for the 
>> platform?
>>
>
> struct ABC {
> version (RequireAlign4) align(4)
> byte a;
> int b;
> int64 c;
> }
>

Please 'splain the above. 





More information about the Digitalmars-d mailing list