Declaring extern(C) declarations with template mixins

Mathias Lang via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Jan 12 13:27:12 PST 2016


On Tuesday, 12 January 2016 at 21:22:46 UTC, Jacob Carlborg wrote:
> Is this supposed to work:
>
> template Foo()
> {
>     extern(C) int printf(in char*, ...);
> }
>
> mixin Foo;
>
> void main()
> {
>     printf("foo\n");
> }
>
> It fails with a linker error, undefined symbol, due to not 
> applying C mangling:
>
> Undefined symbols for architecture x86_64:
>   "__D4main8__mixin76printfUxPaYi", referenced from:
>       __Dmain in main.o
> ld: symbol(s) not found for architecture x86_64
> clang: error: linker command failed with exit code 1 (use -v to 
> see invocation)

https://issues.dlang.org/show_bug.cgi?id=12575


More information about the Digitalmars-d-learn mailing list