Generating .di header files from ImportC files

d007 d007 at gmail.com
Sat Nov 11 08:02:29 UTC 2023


On Monday, 23 October 2023 at 18:00:39 UTC, Walter Bright wrote:
> On 10/23/2023 9:08 AM, d007 wrote:
>> Error: unrecognized file extension h
>
> That's because recognizing h files caused Iain problems 
> building gdc.
>
> To deal with:
>
> --- file.c ---
> #include "file.h"
> --------------

today I try use importC with libfuse3.

DMD64 D Compiler v2.106.0-beta.1

```sh
dmd -c fuse.c -Hf=fuse.di
fuse.c:1:10: fatal error: fuse3/fuse.h: No such file or directory
     1 | #include "fuse3/fuse.h"
       |          ^~~~~~~~~~~~~~
compilation terminated.
Error: C preprocess command cpp failed for file fuse.c, exit 
status 1
```

I am not sure how to pass c flags into dmd here, and I can not 
find document about this.


try with:

```sh
clang -E $dir/fuse.c -o fuse.i -I./include -DFUSE_USE_VERSION=30

dmd -c fuse.i -Hf=fuse.di

/usr/include/x86_64-linux-gnu/bits/byteswap.h(34): Error: missing 
comma or semicolon after declaration of `__uint16_t`, found 
`__bswap_16` instead
/usr/include/x86_64-linux-gnu/bits/byteswap.h(41): Error: no type 
for declarator before `}`
/usr/include/x86_64-linux-gnu/bits/byteswap.h(49): Error: missing 
comma or semicolon after declaration of `__uint32_t`, found 
`__bswap_32` instead
/usr/include/x86_64-linux-gnu/bits/byteswap.h(56): Error: no type 
for declarator before `}`
/usr/include/x86_64-linux-gnu/bits/byteswap.h(69): Error: missing 
comma or semicolon after declaration of `__inline`, found 
`__uint64_t` instead
/usr/include/x86_64-linux-gnu/bits/byteswap.h(77): Error: no type 
for declarator before `}`
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h(33): Error: 
missing comma or semicolon after declaration of `__uint16_t`, 
found `__uint16_identity` instead
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h(36): Error: 
no type for declarator before `}`
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h(39): Error: 
missing comma or semicolon after declaration of `__uint32_t`, 
found `__uint32_identity` instead
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h(42): Error: 
no type for declarator before `}`
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h(45): Error: 
missing comma or semicolon after declaration of `__uint64_t`, 
found `__uint64_identity` instead
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h(48): Error: 
no type for declarator before `}`
/usr/include/x86_64-linux-gnu/sys/select.h(102): Error: found 
`__readfds` when expecting `,`
/usr/include/x86_64-linux-gnu/sys/select.h(102): Error: no 
type-specifier for parameter
/usr/include/x86_64-linux-gnu/sys/select.h(103): Error: found 
`__writefds` when expecting `,`
/usr/include/x86_64-linux-gnu/sys/select.h(103): Error: no 
type-specifier for parameter
/usr/include/x86_64-linux-gnu/sys/select.h(104): Error: found 
`__exceptfds` when expecting `,`
/usr/include/x86_64-linux-gnu/sys/select.h(104): Error: no 
type-specifier for parameter
/usr/include/x86_64-linux-gnu/sys/select.h(105): Error: found 
`__timeout` when expecting `,`
/usr/include/x86_64-linux-gnu/sys/select.h(127): Error: found 
`__readfds` when expecting `,`

```


I use debian 12 amd64.




More information about the Digitalmars-d mailing list