Moving from C to D

BLS windevguy at hotmail.de
Wed Jan 28 03:49:13 PST 2009


Daniel Keep wrote:
> 
> bob wrote:
>> do IN become in maybe?
>>
>> BLS Wrote:
>>
>>> BCS wrote:
>>>> Reply to bob,
>>>>
>>>>> sorry i copy wrong line. how do i do this line:
>>>>>
>>>>> int PASCAL FAR mycnt ( IN SOCKET s, IN const struct sockaddr FAR *name, 
>>>> IN int namelen );
>>>>> bob Wrote:
>>>>>
>>>> step 1 would be get the output from the preprocessor and take a look at 
>>>> it. I'm guessing that PASCAL, FAR and IN are macros
>>>>
>>>> step 0 is try htod:   http://www.digitalmars.com/d/1.0/htod.html
>>>>
>>>>
>>> I think
>>> int PASCAL FAR mycnt()
>>> becomes :
>>> extern (Pascal) int mycnt()
>>>
>>> The FAR* thingy seems to be a 16 bit relict...
>>>
>>> Guess the IN is not nessesary in D..., not sure though
>>>
>>> Bjoern
> 
> "in" means "pass argument by value," and is the default for arguments.
> 
> Also, I believe that PASCAL is the same as the Windows cc, so my guess
> at the conversion would be:
> 
> For D 1.x:
> 
> extern(Windows) int mycnt ( SOCKET s, sockaddr* name, int namelen );
> 
> For D 2.x:
> 
> extern(Windows) int mycnt ( SOCKET s, const sockaddr* name, int namelen );
> 
> Note that you'd have to supply definitions of SOCKET and sockaddr.
> 
>   -- Daniel

I am pretty sure that PASCAL means  __pascal

so the D1 translation is :
extern (Pascal) int mycnt ( SOCKET s, sockaddr* name, int namelen );

See :http://www.digitalmars.com/d/1.0/htomodule.html  at the bottom

Bjoern


More information about the Digitalmars-d-learn mailing list