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
Re: extern(C) function literals for stubs
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
Re: extern(C) function literals for stubs
Am Wed, 22 Jan 2014 17:52:03 + schrieb bearophile bearophileh...@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
Re: extern(C) function literals for stubs
Am Wed, 22 Jan 2014 17:52:03 + schrieb bearophile bearophileh...@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