【发布时间】:2021-03-23 00:38:04
【问题描述】:
ps3000aGetStreamingLatestValues
(
int16_t handle,
ps3000aStreamingReady lpPs3000AReady,
void * pParameter
)
-
lpPs3000AReady,指向你的ps3000aStreamingReady回调函数的指针 -
pParameter,一个void指针,将被传递给ps3000aStreamingReady回调。回调可以选择使用此指针向应用程序返回信息。
这里是ps3000aStreamingReady回调函数:
typedef void (CALLBACK *ps3000aStreamingReady)
(
int16_t handle,
int32_t noOfSamples,
uint32_t startIndex,
int16_t overflow,
uint32_t triggerAt,
int16_t triggered,
int16_t autoStop,
void * pParameter
)
我的问题是如何在我的主函数中声明pParameter? pParameter 用作这两个函数之间的通信器,它是一个 void 指针,因为它可能必须传递任何类型的数据。不知何故,我必须在将这个 void 指针作为这些函数的参数传递之前分配内存。但怎么能做到呢?
【问题讨论】:
-
void*参数需要包含什么? -
* pParameter,一个从 ps3000aGetStreamingLatestValues.ps3000aStreamingReady 回调函数传来的空指针,可以写到这个位置,将任何数据,例如状态标志,发送回应用程序。
-
void* userData是捕获额外数据的 C 方式,带有std::function的 C++ 方式允许捕获 lambda 甚至自定义函子。 -
您可以将指向(几乎)任何东西的指针作为声明为
void*的参数传递。如果你真的想要,你可以添加一个显式转换(在函数调用中)。 -
@AnikIslam 需要从
pParameter获取哪些参数,以便调用lpPs3000AReady?
标签: c++ pointers callback void void-pointers