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:
> > 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?

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…

> 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;
>       }
> }

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++.

-- 
Russel.
=============================================================================
Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.win...@ekiga.net
41 Buckmaster Road    m: +44 7770 465 077   xmpp: rus...@winder.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to