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









Dennis <dkorpel gmail.com> 