初入职常见问题:忽略局部变量的作用域,在if语句中声明的局部变量只在{}内有效

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33249383/article/details/84998071

在做存储服务StoreProxy项目时,因为把位置(A)处的代码放到了位置(B),导致保存的图片数据有误,原因是忽略叻局部变量的作用域,在if语句中声明的局部变量res只在{}内有效。

函数xxxxx(xxx,xxxx)

{

    (A)CHttpCurl::response res = {}; //注意作用域

if(xxxxx)

{

   (B)

    ......

  GSString url = (char*)pData;

  url = url.substr(0, url.find_last_of('g')+1);

  //根据url请求图片数据

  res = CHttpCurl::GetInstance()->get(url);

  if (200 != res.ncode)

  {

   GSStrUtil::Format(strLog, "获取图片失败 :%s", strInfo.c_str());

   Log(strLog.c_str(), LOGGER_LEVEL_ERROR);

  }

  //获取返回的图片数据和长度

  pData = (char*)res.strBody.c_str();

  nDataLen = res.strBody.length();

.......

}

........

    使用了res的保存图片的相关操作

......

}

猜你喜欢

转载自blog.csdn.net/qq_33249383/article/details/84998071