“userdata指针”的定义是什么?

时间:2009-03-02 15:51:09

标签: language-agnostic callback user-data

我搜索了一个很好的解释,但找不到一个。

我可以尝试自己写一个,但我更愿意,如果有更好的 english 的人可以帮助我在评论here中为Zan Lynx解释这个。

......似乎某处应该有一个很好的解释,为什么不在这里呢?

2 个答案:

答案 0 :(得分:3)

查看sqlite3_exec() - 它为每个检索到的行调用一个回调(第三个参数),并将您提供的指针(第四个参数)传递给此回调。这可以是指向您希望的任何对象的指针 - 您必须在可以访问指向对象之前对其进行适当的转换。该对象称为userdata对象,指向它的指针称为userdata指针。

对于sqlite3_exec(),您可以将指针传递给容器,该容器将在请求完成时存储所有检索到的表行。

答案 1 :(得分:3)

当库代表程序管理某些数据结构时(例如,GUI应用程序中的窗口由OS管理),它通常会将这些结构的内容保密。但是,程序通常可以维护一些特定于程序使用这些结构的附加数据。因此,库通常会提供对每个结构存储的字段(通常称为用户数据)的访问权。

程序对用户数据字段的共同使用是每次程序请求库创建结构时分配一些内存,并将指针存储在库提供的用户数据字段中,因此术语 userdata指针