[Solved] Re: Is importC ready?

bachmeier no at spam.net
Mon Nov 15 21:29:53 UTC 2021


On Tuesday, 9 November 2021 at 16:41:04 UTC, bachmeier wrote:
> I tried to compile a simple C file this morning, containing
>
> ```
> #include "nmath.h"
>
> double fsign(double x, double y)
> {
> #ifdef IEEE_754
>     if (ISNAN(x) || ISNAN(y))
> 	return x + y;
> #endif
>     return ((y >= 0) ? fabs(x) : -fabs(x));
> }
> ```
>
> I assumed this would be straightforward since it doesn't have a 
> bunch of dependencies and it's only a few lines of code. 
> Instead, I got a stream of errors. After running the file 
> through the preprocessor, I had to comment out anything with
>
> -  `__extension__`
> - Restricted pointers `*__restrict`
> - `_Float128`
> - `__asm__`
>
> And in the source, anything with ISNAN, or in the preprocessed 
> file,
>
> - `__builtin_isnan`
>
> I [filed a 
> bug](https://issues.dlang.org/show_bug.cgi?id=22496). After 
> this experience, it's not obvious to me that importC is ready 
> to be part of a stable compiler release. Maybe I just had bad 
> luck with the choice of file.

There's a solution for this. Buried in a recent post on This Week 
in D, there's [a link to a list of 
fixes](https://raw.githubusercontent.com/ibuclaw/importC/main/src/keywords.c.in). That plus `#define __builtin_isnan isnan` allows my C file and many others to compile with LDC. Some files that compile with LDC do not compile with DMD. I'm still having trouble with `__builtin_isfinite` errors. I thought `#define __builtin_isfinite isfinite` would work, but it doesn't.

Once I understand this better, I will update the issue I created.


More information about the Digitalmars-d mailing list