A Programmer's Dilema: juggling with C, BetterC, D, Macros and Cross Compiling, etc.
Dukc
ajieskola at gmail.com
Mon May 1 09:35:59 UTC 2023
On Monday, 1 May 2023 at 09:17:14 UTC, Eric P626 wrote:
>> This is a false dilemma: D has full C compatibility.
>
> From what I understand, D can use C, but C cannot use D? It's
> like C++: C++ can call C but C cannot call C++.
>
> 50% or more of my code will be put in re-usabled libraries. If
> I want people to use those libs, I would need to compile them
> in C or better C. Because betterC seems to create C libraries.
> If D can make C libraries, then indeed, I could do everything
> in D.
D can make C libraries, BetterC or no.
The difference is that a vanilla D library has a DRuntime
dependency, meaning the runtime has to be initialised. You can do
that by either writing the `main()` function in D, or manually
initialising the runtime from C before calling other D functions.
Not sure of the specifics but I'm sure it's not too hard. Seems
the C-linked functions in
[core.runtime](https://dlang.org/phobos/core_runtime.html#.Runtime.initialize) ought to do the trick.
In BetterC, there is no DRuntime that needs initialising, but for
a common application DRuntime is worth the hassle to initialise
it many times.
More information about the Digitalmars-d-learn
mailing list