LDC / BetterC / _d_run_main
Richard
garlicbready at googlemail.com
Sat Mar 10 02:25:38 UTC 2018
Hi,
I've been trying to see if I can get an mbed project to work with
Dlang
basically compiling D code for use on a Cortex-M Proccessor
So far I've been using the latest release of LDC with the
-BetterC Flag
From what I can gather, normally without -BetterC it works like
this:
* main() - C main generated by the compiler
* _d_run_main - called by C main to setup the runtime
* _Dmain - main function in D land, is called by _d_run_main
With -BetterC enabled, it instead works like this
* main() - C main generated by the compiler
* _d_run_main - needs to be written by the user since there's
no runtime
* _Dmain - main function in D land
so basically I need to write my own basic _d_run_main to call
_Dmain.
Code in github does something like this typically
```
private alias extern(C) int function(char[][] args) MainFunc;
private extern (C) int _d_run_main(int argc, char** argv,
MainFunc mainFunc)
{
return mainFunc(null);
}
```
However the LDC compiler doesn't like this as it expects the
mainFunc parameter to be a void pointer
so I tried this instead
```
extern (C) int _d_run_main(int argc, char **argv, void* mainFunc)
{
MainFuncType mFunc = cast(MainFuncType) mainFunc;
return mFunc(null);
}
```
but nope that didn't seem to work ether, compiles okay but the
code in main() (D space) isn't called
I'd imagine this should be a simple thing, anyone got any ideas?
More information about the Digitalmars-d-learn
mailing list