On Friday, 10 August 2018 at 11:17:10 UTC, learnfirst1 wrote:
I think the static extern(C) nested function should just work
like global extern(C) function. DMD still report missing
symbols. Or I am wrong about this ?
template G(){
static extern(C) pragma(crt_constructor) void init(){}
}
void main(){
mixin G!(); // Line 5
init();
}
If you try the same without the mixin template, you'll see that
it doesn't work:
void main() {
static extern(C) pragma(crt_constructor) void init();
init();
}
Depending on the order of static, extern(C) and
pragma(crt_constructor), you can get at least two different error
messages, but either way - it doesn't work.
It would be possible to make this work by changing the compiler,
but according to spec, it shouldn't.
--
Simen