[fpc-pascal] callback from c with varargs

Luca Olivetti luca at ventoso.org
Sun Dec 20 13:01:55 CET 2020


El 19/12/20 a les 23:15, Jonas Maebe via fpc-pascal ha escrit:
> On 19/12/2020 22:35, Luca Olivetti via fpc-pascal wrote:
>> I'm trying to use a c library where I can define a logging plugin.
>>
>> The c prototype for the callback is
>>
>>      void (*log)(void *logContext, UA_LogLevel level, UA_LogCategory
>> category, const char *msg, va_list args);
>>
>>
>> however I couldn't find a way to define a suitable callback in fpc since
>> the "array of const" construct is not allowed with cdecl without
>> external, i.e.
> 
> It is indeed not possible to implement a function with C varargs in FPC.

I was afraid that's the answer :-(

as an ugly workaround, I wrote a c library that vsnprintf msg and args 
to a buffer and then calls a pascal function with no varargs.

It works but, as I said, it's ugly and I'd need to provide a .a for 
every platform I plan to use.

Is there a better/simpler way (apart from asking the library developers 
to use a callback with no varargs)?

Bye
-- 
Luca


More information about the fpc-pascal mailing list