C ++ CURL无法设置标头

时间:2015-02-16 06:25:42

标签: c++ curl

我目前正在开发一个关于CURL的程序。我编写了以下代码来添加自定义标题: -

struct curl_slist *chunk = NULL;    
chunk = curl_slist_append(chunk, "Another: yes");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);

以上代码没问题,但如果我将代码更改为以下代码,我发现发送的标题不包含Another: yes

void add_header(CURL *c, struct curl_slist *h){
    h = curl_slist_append(h, "Another: yes");
}

struct curl_slist *chunk = NULL;
add_header(curl, chunk);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);

我的第二段代码有什么问题?

1 个答案:

答案 0 :(得分:1)

问题在于您将指向chunk的指针传递给函数,然后为其指定不同的值。你是通过复制传递指针本身,这意味着函数内的h是一个不同于它外面的chunk的指针(是的,它们都指向同一个位置,但它没有因为你正在改变指针本身的值,而不是它指向的内存,所以这很重要。要更改它,请通过引用传递指针:

void add_header(CURL *c, struct curl_slist *&h){ //note the *&
    h = curl_slist_append(h, "Another: yes");
}