Moving from C to D

Daniel Keep daniel.keep.lists at gmail.com
Wed Jan 28 03:41:28 PST 2009



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


More information about the Digitalmars-d-learn mailing list