C++ libcurl curl\u easy\u setopt long参数传递不正确-va_arg(param,long)
有可能知道一些关于它的libcurl专家吗 我注意到这一点,因为我无法关闭libcurl VERBOSE:C++ libcurl curl\u easy\u setopt long参数传递不正确-va_arg(param,long),c++,visual-studio-2010,visual-studio,libcurl,C++,Visual Studio 2010,Visual Studio,Libcurl,有可能知道一些关于它的libcurl专家吗 我注意到这一点,因为我无法关闭libcurl VERBOSE: curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L); 当我将调用跟踪到libcurl中时,我发现0L(long)被转换成一个非零值,导致VERBOSE始终处于打开状态。我还没有尝试过,但我很确定任何长参数都不会正确传递 data->set.verbose = (0 != va_arg(param, long))?TRUE:FALSE; 在哪里
curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
当我将调用跟踪到libcurl中时,我发现0L(long)被转换成一个非零值,导致VERBOSE始终处于打开状态。我还没有尝试过,但我很确定任何长参数都不会正确传递
data->set.verbose = (0 != va_arg(param, long))?TRUE:FALSE;
在哪里
但我不确定这些人在做什么。为什么会发生这种情况以及如何解决 我使用VisualStudio 2010 C++,用LIbCURL7.27.0< P> <代码> VAujARG()>代码>使用指针算法从您的代码> VAYLISH PARAM/<代码>中提取0L。您可以在
va_列表
类型或上阅读更多内容。将0L转换为非零数字是而不是
在打开连接之前,尝试调用curl\u easy\u setopt()。文档中指出,您的详细设置是“设置一次,以用于多个独立连接”(urldata.h ln 1537)
如果您仍然认为它不起作用,可以将CURL*转换为会话句柄*,并在调试器中检查它,例如:
struct SessionHandle *data = reinterpret_cast<SessionHandle*>(curl);
// Inspect data->set.verbose
struct SessionHandle*data=reinterpret\u cast(curl);
//检查数据->set.verbose
您可以在urldata.h中找到SessionHandle的定义。谢谢Scotty!关于va_last和va_args的非常有用的帖子。SessionHandle是一个很好的技巧,所以我现在可以检查curl的状态。我仍然无法关闭冗长,但这可能是另一个问题。我确实移动了调用(就在创建CURL handle之后),但仍然没有运气。不知道这是否是因为我没有在调试时每次调用global_cleanup。
struct SessionHandle *data = reinterpret_cast<SessionHandle*>(curl);
// Inspect data->set.verbose