On Wednesday, 16 June 2021 at 16:27:13 UTC, Dennis wrote:
On Wednesday, 16 June 2021 at 14:38:10 UTC, jfondren wrote:
What do I change to
1. a script like this that uses hostname
2. the hostname module

so that both can be built with -betterC when and only when
the script is using -betterC?

That's currently the situation: you can only build when both are betterC or else you get a linker error. It has to be a linker error, dmd cannot know at the time of compiling project A how project B is going to be compiled and vice versa.

It's dub that's calling dmd though. Cargo handles this situation with features: https://doc.rust-lang.org/cargo/reference/features.html Where
this case would look something like

```
[dependencies]
hostname = { version = "0.1.1", features = ["betterC"] }
```

in the script's dub config that uses hostname.

I feel like I've seen similar configurations in dub configs, but I see
nothing about this in the documentation.

It noticed your code looks like this:
```D
version(D_BetterC) {
    char* hostnamez;
} else {
    immutable char* hostnamez;
}
```

The different types result in different mangles, causing the linking errors. Why not simply give them the same type?

the pragma(crt_constructor) function can't initialize immutables:
https://forum.dlang.org/post/wvjfygxfvmoaortmn...@forum.dlang.org

Reply via email to