【发布时间】:2009-03-02 15:51:08
【问题描述】:
我已经搜索了一个很好的解释,但找不到。
我可以尝试自己写一个,但我希望有更好的english 可以帮助我在评论here 中为 Zan Lynx 解释这一点。
...好像应该在某个地方有一个很好的解释,为什么不在这里?
【问题讨论】:
标签: language-agnostic callback user-data
我已经搜索了一个很好的解释,但找不到。
我可以尝试自己写一个,但我希望有更好的english 可以帮助我在评论here 中为 Zan Lynx 解释这一点。
...好像应该在某个地方有一个很好的解释,为什么不在这里?
【问题讨论】:
标签: language-agnostic callback user-data
当库代表程序管理某些数据结构时(例如,GUI 应用程序中的窗口由操作系统管理),它通常会将这些结构的内容保密。但是,程序维护一些特定于程序使用这些结构的附加数据通常很有用。因此,库通常会提供对与每个结构一起存储的字段(通常称为用户数据)的访问。
程序对用户数据字段的常见用途是每次程序请求库创建结构时分配一些内存,并将指向该内存的指针存储在库提供的用户数据字段中,因此术语用户数据指针。
【讨论】:
查看sqlite3_exec() - 它为每个检索到的行调用一个回调(第三个参数),并将您提供的指针(第四个参数)传递给这个回调。这可以是指向您想要的任何对象的指针——您必须在访问指向的对象之前适当地转换它。该对象称为 userdata 对象,指向它的指针称为 userdata 指针。
在 sqlite3_exec() 的情况下,您可以传递一个指向容器的指针,该容器将在请求完成时存储所有检索到的表行。
【讨论】: