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

Lionello Lunesu lio at lunesu.remove.com
Tue Jun 1 07:00:19 PDT 2010


On 1-6-2010 12:05, Justin Spahr-Summers wrote:
> 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++.

Where does it say that translated headers cannot be better than the
original? :)

L.


More information about the Digitalmars-d mailing list