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

Reply via email to