函数访问参数受限的处理方法

在我们使用函数的时候,有很多时候由于参数长度的限制而导致我们功能不完善。
比如:
int funcA(char offlen, unsigned char len, char *pbuf)
{

}

int funcB(char offlen, int len, char *pbuf)
{
unsigned long ulRet = 0;
ulRet = funcA(offlen, (char)len, pbuf);

}
现在我们有一个main函数要访问funcB函数,获取它的返回数据pbuf的内容,我们在传参的时候,如果传进去一个len大于255长度的参数,那我很明显这个函数会返回失败,在这种情况下我们该如何处理呢?
方法一:
修改funcA的函数原型,将其修改为:
int funcA(char offlen, unsigned int len, char *pbuf)
{

}
这是一种比较好的方法,但是若是其中有某些delay呢,而且其中的delay是cpu死等的处理方式,我们该怎么办,如果我们传如一个很大的是数据很可能就会导致cpu的挂死;
方法二:
修改将funcA的原型保留,但是给其修改一个名字,funcC,然后我们在使用funcA这个函数名字去封装funcC,这样对外的接口不会改变,但是我们的功能已经作出完善了。
int funcC(char offlen, unsigned char len, char *pbuf)
{

}
int funcA(char offlen, unsigned char len, char *pbuf)
{
if(len < 255)
funcC(offlen, len, pbuf);
else
{…
for(i=0;i<(len/255);i++)
{
funcC(offlen+(i*255), len, pbuf);
}
}
}
这种处理方式可以很好的解决我们的问题

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值