如何通过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;
};
答案 0 :(得分:1)
如果库真的需要一个函数指针(不是像std :: function这样的通用Callable),并且不提供将上下文或用户指针传递给回调的功能,那么你必须使全局对象成为全局对象(全部它的缺点):
#include <stdio.h>
#include "library.h"
static int globalObject = 0;
int callbackFunction(int libraryFunctionOutput)
{
printf("%s, %d", libraryFunctionOutput, globalObject);
return 1;
}
int main(int argc, char* argv[])
{
libraryFunction(callbackFunction);
}