我正试图将结构传递给具有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);
}

机器说“请求成员‘请求路径’不是结构或联合。”所以我猜结构(ctx)没有正确传递。有人能指点我正确的方向吗?

最佳答案

userp是一个指针。您应该将cast键入gfcontext_t *

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

关于c - 将结构传递给采用类型为void *的变量的回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42941460/

10-08 22:45