Why does the importC example not compile?

Gavin Ray ray.gavin97 at gmail.com
Sat Jan 14 15:32:54 UTC 2023


On Friday, 13 January 2023 at 12:46:33 UTC, Dennis wrote:
> On Friday, 13 January 2023 at 12:33:28 UTC, kdevel wrote:
>> What must be added or changed in order to test every example 
>> which is intended to produce an executable?
>
> Support for separate compilation / ImportC would need to be 
> added to dspec_tester:
> https://github.com/dlang/dlang.org/blob/master/tools/dspec_tester.d

I ran into this issue too, what I discovered is that when you 
import `square`, it is importing the file `square.c` (if one 
exists).

Because you have a function called `square` in a file called 
`square`, confusingly, you want `square.square`. Hence the error 
message about trying to invoke parens `()` on a module.

If you rename the file to `my_c_funcs.c` and then you do:

```d
import std.stdio;
import my_c_funcs;

void main()
{
	int i = 7;
	writefln("The square of %s is %s", i, my_c_funcs.square(i));
}
```

```sh
(dmd-nightly)[user at MSI source]$ dmd app.d my_c_funcs.c
(dmd-nightly)[user at MSI source]$ ./app
The square of 7 is 49
```


More information about the Digitalmars-d-learn mailing list