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