cast a C char array - offset ?

irtcupc via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Feb 2 05:40:29 PST 2015


On Monday, 2 February 2015 at 13:34:28 UTC, ketmar wrote:
> On Mon, 02 Feb 2015 13:32:57 +0000, ketmar wrote:
>
>> On Mon, 02 Feb 2015 13:23:23 +0000, irtcupc wrote:
>> 
>>> my current understanding is that:
>>> - C: char CompleteInstr[INSTRUCT_LENGTH] is actually a raw 
>>> chunk - D:
>>> defining the member as char[INSTRUCT_LENGTH] is an error - 
>>> the first
>>> member of a D array is the .length - first char actually 
>>> stands where
>>> .length uses to be, which explains the shift.
>> 
>> nope. fixed length arrays doesn't have dedicated `.length` 
>> member. try
>> this:
>> 
>>   align(1)
>>   struct _Disasm {
>>   align(1):
>>     ...
>
> actually, first align is not necessary at all. i.e.:
>
>   struct _Disasm {
>   align(1):
>
> the difference is that `align` before struct tells how 
> structure should
> be packed (i.e. when you have `_Disasm[2] arr`). and `align` 
> *inside*
> struct tells compiler how struct *members* should be packed.

Thx, problem fixed, it works now.


More information about the Digitalmars-d-learn mailing list