void *

2017-03-22 1 views
1

の変数をとるコールバックに構造体を渡すcurl_easy_setoptでコールバックセットに構造体を渡そうとしています。ここでは構造体です:void *

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

struct gfcontext_t ctx; 

私はコールバックを設定する以下の2行持っている:

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'のためだから私はstruct(ctx)が正しく渡されていないと思います。誰かが私を正しい方向に向けることができますか?

+3

タイプは 'void *'であり、無効ではありません –

答えて

2

userpはポインタです。それをgfcontext_t *にキャストしてください。

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

もちろんです。私はまだ決してポインタの周りに私の心を得ることはできません。ありがとう。 – Phl3tch