Thread overview | ||||||
---|---|---|---|---|---|---|
|
January 22, 2014 extern(C) function literals for stubs | ||||
---|---|---|---|---|
| ||||
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 = ???
--
Marco
|
January 22, 2014 Re: extern(C) function literals for stubs | ||||
---|---|---|---|---|
| ||||
Posted in reply to Marco Leise | 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
|
January 22, 2014 Re: extern(C) function literals for stubs | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | Am Wed, 22 Jan 2014 17:52:03 +0000 schrieb "bearophile" <bearophileHUGS@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 Thanks, but I want it to be a function pointer so I can swap it from within the function literal in the fashion of nothrow extern(C) void function(int) someFunc = (int arg) { someFunc = GetProcAddress("someFunc"); someFunc(arg); } -- Marco |
January 22, 2014 Re: extern(C) function literals for stubs | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | Am Wed, 22 Jan 2014 17:52:03 +0000 schrieb "bearophile" <bearophileHUGS@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 |
Copyright © 1999-2021 by the D Language Foundation