Как сделать globalObject
доступным для callbackFunction
?
Я использую стороннюю библиотеку library.h
, в которой есть метод libraryFunction
. Результатом libraryFunction
является libraryFunctionOutput
, который передается в функцию обратного вызова callbackFunction
.
Как передать другой объект (например, globalObject
) для использования внутри функции обратного вызова callbackFunction
?
К сожалению, сторонняя библиотека скомпилирована, поэтому я не могу внести в нее какие-либо изменения.
#include <stdio.h>
#include "library.h"
int callbackFunction(int libraryFunctionOutput):
printf("%s, %d", libraryFunctionOutput, globalObject);
return 1;
int main(int argc, char* argv[])
{
int globalObject = 0;
libraryFunction(callbackFunction);
}
В документации функция показана так:
int __stdcall libraryFunction(const char* filename,
unsigned int flags,
int userID,
MathrelCallback callbackFunction);
Структура MathrelCallback
определяется следующим образом:
struct MathrelCallback {MathrelHeader header;
MathrelInfo data;
unsigned int Type;
};
libraryFunction
? Если он принимает лямбда, ответ будет тривиальным. Не знаю, возможно ли это, если он принимает только указатели функций, кроме как путем копированияglobalObject
в глобальную переменную. - person Franck   schedule 08.10.2016libraryFunction
нельзя передавать никакие другие контекстные аргументы, кроме функции обратного вызова. - person   schedule 08.10.2016MathrelCallback
. - person   schedule 08.10.2016