digitalmars.D.learn - Union member positions?
Is it possible to set a "position" on a union member? or is there is a language-integrated equivalent? For example, to get access to each byte in an unsigned integer while still supporting the original type. ```D ///a single uint that would be accessed as two ushort, or four separate ubyte union UnionExample{ uint EAX; //upper ushort EAHX; ubyte EAHH; ubyte EAHL; //lower ushort EALX; ubyte EALH; ubyte EALL; } ``` Thanks.
Aug 17 2021
On Tuesday, 17 August 2021 at 13:46:22 UTC, z wrote:Is it possible to set a "position" on a union member?You can use anonymous `struct` and `union` blocks. ```D union UnionExample{ uint EAX; struct { //upper union { ushort EAHX; struct { ubyte EAHH; ubyte EAHL; } } //lower union { ushort EALX; struct { ubyte EALH; ubyte EALL; } } } } ```
Aug 17 2021
On 17.08.21 15:46, z wrote:Is it possible to set a "position" on a union member? or is there is a language-integrated equivalent? For example, to get access to each byte in an unsigned integer while still supporting the original type. ```D ///a single uint that would be accessed as two ushort, or four separate ubyte union UnionExample{ uint EAX; //upper ushort EAHX; ubyte EAHH; ubyte EAHL; //lower ushort EALX; ubyte EALH; ubyte EALL; } ``` Thanks.union UnionExample { uint EAX; struct { union // upper { ushort EAHX; struct { ubyte EAHH; ubyte EAHL; } } union // lower { ushort EALX; struct { ubyte EALH; ubyte EALL; } } } }
Aug 17 2021