extern(C) function literals for stubs
Marco Leise
Marco.Leise at gmx.de
Wed Jan 22 10:26:25 PST 2014
Am Wed, 22 Jan 2014 17:52:03 +0000
schrieb "bearophile" <bearophileHUGS at lycos.com>:
> Marco Leise:
>
> > Can I define them somehow? The use case is defining extern C
> > functions that contain code to load the real thing from a
> > library.
> >
> > nothrow extern(C) void function(int) someFunc = ???
>
> Perhaps you want:
>
> extern(C) nothrow void someFunc(int someArg);
>
> Bye,
> bearophile
Got it now. By declaring the literal stub function in a
template instead I can use the normal function declaration
syntax without introducing a new symbol at the definition site:
{
...
nothrow extern(C) void function(int) someFunc = &Stub!someFunc;
...
}
nothrow extern(C) auto Stub(alias func)(ParameterTypeTuple!func args)
{
debug printf("Loading %s...\n", func.stringof.ptr);
return (func = &impl)(args);
}
--
Marco
More information about the Digitalmars-d-learn
mailing list