On Friday, 10 October 2025 at 10:52:44 UTC, Iain Buclaw wrote:
Therefore, the D module needs to be told where to find the
source files, with `-I source`
Mind that C sources need to be preprocessed before handing them
over to the D compilation unit.
https://gcc.gnu.org/onlinedocs/gdc/ImportC.html
thanks, yes, `-I source` worked in my case. I have a sub folder
of `source` which caused the problem.
Then I removed sub folder of `source` and continue the test.
I tried to manually call the pre-processor:
```sh
gcc -E file2.c > file2.i
gdc main.d file2.i -o main
```
It worked (no `#include` yet) so I assume the command is correct.
Then I add `#include <stdio.h>` in file2.c and run the commands
again:
```c
//file2.c
#include <stdio.h>
void test()
{
}
```
```d
//main.d
import file2;
void main()
{
file2.test();
}
```
```sh
gcc -E file2.c > file2.i
gdc main.d file2.i -o main
```
I got this error:
```
gdc main.d file2.i -o main
/usr/include/stdio.h:264:44: error: found ‘__filename’ when
expecting ‘,’
264 | extern FILE *fopen (const char *__restrict __filename,
| ^
/usr/include/stdio.h:264:54: error: no type-specifier for
parameter
264 | extern FILE *fopen (const char *__restrict __filename,
```
maybe it does not recognize `__restrict `?
I tried both gdc (version 13) and gdc-14, same error.
Anything wrong with the commands that I have used?