将结构传递给一个带有void *类型变量的回调

时间:2017-03-22 02:06:51

标签: c struct

我试图通过curl_easy_setopt将结构传递给回调集。这是结构:

typedef struct gfcontext_t {
  int sockfd;
  char requested_path[1024];
  char path[1024];
} gfcontext_t;

struct gfcontext_t ctx;

我已经设置了这两行回调:

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ctx);

并且回调本身如下所示:

size_t write_callback(void *buffer, size_t size, size_t nmemb, void *userp) {
  printf("userp: %s\n", userp.requested_path);
}

机器说"请求成员'requested_pa​​th'不是结构或联合。"所以我猜结构(ctx)没有被正确传递。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:2)

userp是一个指针。您应该将其转换为gfcontext_t *

printf("userp: %s\n", ((gfcontext_t *)userp)->requested_path);