digitalmars.D.learn - Unions and Structs
- Russel Winder via Digitalmars-d-learn (22/22) Jan 18 2016 So this is an error?
- anonymous (14/25) Jan 18 2016 I don't see the problem. You have to access the thingy's 'data' through
- Russel Winder via Digitalmars-d-learn (22/52) Jan 18 2016 That is what I thought. There is a bit of this stuff in the real more
- Jacob Carlborg (6/8) Jan 18 2016 Please report any issues to [1] with a test case. C code, expected D
- Russel Winder via Digitalmars-d-learn (16/25) Jan 19 2016 =A0
So this is an error? union flob { ulong data; struct thingy { uint data; uint bits; } thingy burble; }; because you cannot have a union field with a name that is also the name of a struct field defined within the union. =C2=A0=C2=A0 --=20 Russel. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder ekiga.n= et 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Jan 18 2016
On 18.01.2016 18:10, Russel Winder via Digitalmars-d-learn wrote:So this is an error? union flob { ulong data; struct thingy { uint data; uint bits; } thingy burble; }; because you cannot have a union field with a name that is also the name of a struct field defined within the union.I don't see the problem. You have to access the thingy's 'data' through the 'burble' member, so there is no ambiguity, is there? This would be different, and dmd rejects it accordingly: ---- union flob { ulong data; struct { uint data; /* test.d(4): Error: variable test.flob.data conflicts with variable test.flob.data at test.d(2) */ uint bits; } } ----
Jan 18 2016
On Mon, 2016-01-18 at 18:17 +0100, anonymous via Digitalmars-d-learn wrote:On 18.01.2016 18:10, Russel Winder via Digitalmars-d-learn wrote:That is what I thought. There is a bit of this stuff in the real more complicated case. But it transpires I was looking at the wrong bits=E2=80= =A6So this is an error? =20 union flob { ulong data; struct thingy { uint data; uint bits; } thingy burble; }; =20 because you cannot have a union field with a name that is also the name of a struct field defined within the union.=20 I don't see the problem. You have to access the thingy's 'data' through=C2=A0 the 'burble' member, so there is no ambiguity, is there?This would be different, and dmd rejects it accordingly: ---- union flob { ulong data; struct { uint data; /* test.d(4): Error: variable test.flob.data conflicts with=C2=A0 variable test.flob.data at test.d(2) */ uint bits; } }Ah, this is actually what is there and what the problem is. It seems DStep is producing somewhat strange D from complicated C unions. The problem is real as you point out in the generated code, but the generated code is nothing like what I would have generated by hand, which wouldn't have the problem. I shall go away and procrastinate for some, to be decided, time about whether to continue with D or revert back to C++. --=20 Russel. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder ekiga.n= et 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Jan 18 2016
On 2016-01-18 19:11, Russel Winder via Digitalmars-d-learn wrote:It seems DStep is producing somewhat strange D from complicated C unions.Please report any issues to [1] with a test case. C code, expected D code, actual D code. [1] https://github.com/jacob-carlborg/dstep/issues -- /Jacob Carlborg
Jan 18 2016
On Mon, 2016-01-18 at 21:50 +0100, Jacob Carlborg via Digitalmars-d- learn wrote:On 2016-01-18 19:11, Russel Winder via Digitalmars-d-learn wrote: =20=A0It seems DStep is producing somewhat strange D from complicated C unions.=20 Please report any issues to [1] with a test case. C code, expected D=C2=code, actual D code. =20 [1] https://github.com/jacob-carlborg/dstep/issuesI made a start, but they aren't full reports as yet. https://github.com/jacob-carlborg/dstep/issues/46 https://github.com/jacob-carlborg/dstep/issues/47 --=20 Russel. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder ekiga.n= et 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Jan 19 2016