Some user-made C functions and their D equivalents

pascal111 judas.the.messiah.111 at gmail.com
Thu Jul 28 12:25:05 UTC 2022


On Thursday, 28 July 2022 at 12:15:19 UTC, kdevel wrote:
> On Wednesday, 27 July 2022 at 18:19:34 UTC, pascal111 wrote:
>> I made a library of some useful functions while I was studying 
>> C, and I'm curious to know if D has equivalents or some ones 
>> for some of my functions, or I have to retype 'em again in D.
>>
>> The library link:
>> https://github.com/pascal111-fra/turbo-c-programs/blob/main/COLLECT2.H
>
> 1. What exact purpose do these
>
> ```
> /******************************************/
> ```
>
> have?
>
> 2.
> ```
> double fix(double x)
> {
>
> double y,* z;
>
> y=modf(x,z);
> y=*z;
>
> return y;
>
> }
> ```
> Besides the remarkable formatting there is an issue with the 
> code. According to the manual the modf function
>
> ```
> double modf(double x, double *iptr);
> ```
>
> stores "The integral part [of x] [...] in the location pointed 
> to by iptr." If you ask the compiler for help (e.g. `gcc -Wall 
> -pedantic`) it will tell you what's wrong:
>
> ```
> ofix.c: In function 'fix':
> ofix.c:7:3: warning: 'z' is used uninitialized [-Wuninitialized]
>     7 | y=modf(x,z);
>       |   ^~~~~~~~~
> ofix.c:5:12: note: 'z' was declared here
>     5 | double y,* z;
>       |            ^
> ```
>
> I would also like to complain about the double assignment to 
> `y`.

"fix" function is the C version of BASIC standard one I made, 
it's the equivalent of "trunc" in D, but the code I programmed 
for "fix" was with TC++ , and it worked in DOS emulators with no 
problem, I have no idea how gcc will treat my code, but I think 
you are right that some other compilers will refuse such code, 
because VC++ 6 refused many of these functions codes I programmed 
with TC++ compiler.


More information about the Digitalmars-d-learn mailing list