C-在回调功能的情况下,返回类型



我正在浏览我的代码库的旧代码,我遇到了以下代码:

void *sampleFunction(tUint8 **inParam1, tUint32 inParam2, char *inParam3, tUint32 inParam4, void* inArg1, void* inArg2)
{
    X100 *foo = getFooValue(...);
    return foo;
}

由于我无法发布确切的代码(由于与工作有关(,所以我发布了上述示例(这正是它的外观(。

X100此处显示的是一个包含一些数据的结构,并且有一个回调函数,如下所示,上述功能已分配(或者这是我的外观(

typedef void* (*tFileReadVerifyCallback)((tUint8 **inParam1, tUint32 inParam2, char *inParam3, tUint32 inParam4, void* inArg1, void* inArg2);
tFileReadVerifyCallback callBack;
//for a certain case :
callBack = sampleFunction;

现在,我有以下问题:

  1. 为什么sampleFunction返回foo哪个类型X100?是因为呼叫背部的行为不同吗?
  2. 如果是这样,那么我的下一个问题将是这些回调如何工作/回报值如何影响它?

注意:我试图在试图保持最小的同时提供足够的信息。如果需要更多输入,请告诉我,我将尝试编辑并添加更多信息。

为什么sampleFunction返回foo哪个类型X100

否,它返回foo,即X100 *,一个对象指针。指定回调以返回void *,所有对象指针均可转换为void *。回调没什么特别的。

void *通常用于这种类型的擦除,以允许函数返回"任何东西"。您会在回调中看到它,因为目的是让客户端代码返回他们可能喜欢的任何对象指针。

当然,当将指针返回任意对象时,以及它如何记录其与它的互动。

相关内容