如何将参数传递给函数指针void(*)(void *)?

2026-04-16 18:393阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计278个文字,预计阅读时间需要2分钟。

如何将参数传递给函数指针void(*)(void *)?

我在C中封装了一些sqlite3的C代码,并对函数中的这种void(*)参数类型感到困惑:void (*)(void *)。我的封装看起来像这样:int Query: Blob(i);

我在C中包装了一些sqlite3 C代码,并且对此函数中的这种类型的参数void(*)(void *)感到困惑

int sqlite3_bind_blob(sqlite3_stmt *,int,const void *,int n,void(*)(void *));

所以我的包装看起来像

如何将参数传递给函数指针void(*)(void *)?

int Query::Blob(int index, const void* blob, int blob_size, void* memory_management){ return sqlite3_bind_blob(stmt, index, blobl, blob_size, memory_management); }

我应该能够将以下内容传递给最后一个参数

>一些函数来释放blob内存
> SQLITE_STATIC或SQLITE_TRANSIENT定义

这两个定义不出所料地定义为

typedef void(* sqlite_3_destructor_type)(void *);

但我真的不明白void / void语法.如何在我的C方法中包装它以接受像delete或者定义这样的函数?

void(*)(void *)类型是指向非成员函数的指针,该函数接受void *类型的单个参数并返回void.

因此,如果您的memory_management函数声明为:

void memory_management(void *);

然后它匹配此定义,Query :: Blob应定义为:

int Query::Blob(int index, const void* blob, int blob_size, void (*memory_management)(void *)){ return sqlite3_bind_blob(stmt, index, blobl, blob_size, memory_management); }

本文共计278个文字,预计阅读时间需要2分钟。

如何将参数传递给函数指针void(*)(void *)?

我在C中封装了一些sqlite3的C代码,并对函数中的这种void(*)参数类型感到困惑:void (*)(void *)。我的封装看起来像这样:int Query: Blob(i);

我在C中包装了一些sqlite3 C代码,并且对此函数中的这种类型的参数void(*)(void *)感到困惑

int sqlite3_bind_blob(sqlite3_stmt *,int,const void *,int n,void(*)(void *));

所以我的包装看起来像

如何将参数传递给函数指针void(*)(void *)?

int Query::Blob(int index, const void* blob, int blob_size, void* memory_management){ return sqlite3_bind_blob(stmt, index, blobl, blob_size, memory_management); }

我应该能够将以下内容传递给最后一个参数

>一些函数来释放blob内存
> SQLITE_STATIC或SQLITE_TRANSIENT定义

这两个定义不出所料地定义为

typedef void(* sqlite_3_destructor_type)(void *);

但我真的不明白void / void语法.如何在我的C方法中包装它以接受像delete或者定义这样的函数?

void(*)(void *)类型是指向非成员函数的指针,该函数接受void *类型的单个参数并返回void.

因此,如果您的memory_management函数声明为:

void memory_management(void *);

然后它匹配此定义,Query :: Blob应定义为:

int Query::Blob(int index, const void* blob, int blob_size, void (*memory_management)(void *)){ return sqlite3_bind_blob(stmt, index, blobl, blob_size, memory_management); }