need clarification: will typedef, C struct initialization, etc.

Justin Spahr-Summers Justin.SpahrSummers at gmail.com
Mon May 31 21:05:47 PDT 2010


On Mon, 31 May 2010 23:31:18 -0300, Leandro Lucarella <llucax at gmail.com> 
wrote:
> 
> Justin Spahr-Summers, el 31 de mayo a las 16:41 me escribiste:
> > On Tue, 01 Jun 2010 06:05:50 +0800, Lionello Lunesu 
> > <lio at lunesu.remove.com> wrote:
> > > 
> > > On 1-6-2010 5:38, Andrei Alexandrescu wrote:
> > > > On 05/31/2010 03:54 PM, bearophile wrote:
> > > >> Andrei Alexandrescu:
> > > >>> typedef is gone.
> > > >>
> > > >> *mewls* I have shown here some examples of typedef usage, and I'll
> > > >> keep posting few more in future. I'd like to pull it back from the
> > > >> grave and keep it :-)
> > > > 
> > > > It's wasted time. typedef is gone.
> > > > 
> > > > Andrei
> > > 
> > > :((
> > > 
> > > I also miss typedef. I thought D had a great opportunity to fix it.
> > > 
> > > Take something like the Windows headers. It mostly consists of typedefs
> > > for handles and whatnot. Without typedef you'd have to use alias and
> > > type safety is out of the windows.
> > > 
> > > So what would be the way to translate those Windows headers? Create a
> > > unique struct for each old typedef? With alias this, and a ctor? Well,
> > > if that's the way to do it now, why not make typedef a shortcut for
> > > exactly that!?
> > 
> > I'm a fan of typedef, personally, but the example you mentioned *would* 
> > be solved using just an alias. 'alias' provides the same functionality 
> > as C/C++'s 'typedef' and more.
> 
> I think he talks about this difference:
> 
> alias int a1;
> alias int a2;
> typedef int t1;
> typedef int t2;
> 
> void fa(a2 a) {}
> void ft(t2 t) {}
> 
> void main() {
> 	a1 a = 5;
> 	fa(a); // <--- compiles fine
> 	t1 t = 10;
> 	ft(t); // <--- error

Understood, but he mentioned translating C headers. D's 'typedef' has no 
ready equivalent in C or C++.


More information about the Digitalmars-d mailing list