我尝试使用curl_slist_append()附加一些字符串,这是我的代码的一部分,create_curl_slist函数总是返回SSXML_OK,但实际上这些字符串不会被附加。
static SSXML create_curl_slist(struct curl_slist *chunk)
{
if ( (chunk = curl_slist_append(chunk, "Accept-Encoding: gzip,deflate") ) == NULL ) return SSXML_CURL_ERROR;
if ( (chunk = curl_slist_append(chunk, "Content-Type: text/xml;charset=UTF-8") ) == NULL ) return SSXML_CURL_ERROR;
if ( (chunk = curl_slist_append(chunk, "Content-Length: 306") ) == NULL ) return SSXML_CURL_ERROR;
if ( (chunk = curl_slist_append(chunk, "Host: test.test:8443") ) == NULL ) return SSXML_CURL_ERROR;
if ( (chunk = curl_slist_append(chunk, "Connection: Keep-Alive") ) == NULL ) return SSXML_CURL_ERROR;
if ( (chunk = curl_slist_append(chunk, "User-Agent: Apache-HttpClient/4.5.5 (Java/12.0.1)") ) == NULL ) return SSXML_CURL_ERROR;
if ( (chunk = curl_slist_append(chunk, "Cookie: sap-usercontext=sap-client=100") ) == NULL ) return SSXML_CURL_ERROR;
return SSXML_OK;
}
int some_func()
{
struct curl_slist *chunk = NULL;
create_curl_slist(chunk);
//there is more here
curl_slist_free_all(chunk);
}但是,当我像下面这样做内联时,一切都运行得很好
int some_func()
{
struct curl_slist *chunk = NULL;
if ( (chunk = curl_slist_append(chunk, "Accept-Encoding: gzip,deflate") ) == NULL ) return SSXML_CURL_ERROR;
if ( (chunk = curl_slist_append(chunk, "Content-Type: text/xml;charset=UTF-8") ) == NULL ) return SSXML_CURL_ERROR;
if ( (chunk = curl_slist_append(chunk, "Host: test.test:8443") ) == NULL ) return SSXML_CURL_ERROR;
if ( (chunk = curl_slist_append(chunk, "Connection: Keep-Alive") ) == NULL ) return SSXML_CURL_ERROR;
if ( (chunk = curl_slist_append(chunk, "User-Agent: Apache-HttpClient/4.5.5 (Java/12.0.1)") ) == NULL ) return SSXML_CURL_ERROR;
if ( (chunk = curl_slist_append(chunk, "Cookie: sap-usercontext=sap-client=100") ) == NULL ) return SSXML_CURL_ERROR;
if ( (chunk = curl_slist_append(chunk, "Content-Length: 306") ) == NULL ) return SSXML_CURL_ERROR;
curl_slist_free_all(chunk);
}我错过了什么?
发布于 2021-02-11 16:46:42
函数create_curl_slist(struct curl_slist *chunk)更新其参数chunk,这些更新对调用者不可见。当执行返回到some_func()时,其变量chunk仍为NULL。
在第二个示例中,some_func()更新其变量chunk。
通过引用传递chunk或返回更新后的chunk。
https://stackoverflow.com/questions/66138023
复制相似问题