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

来源:互联网 发布:java分布式开发书 编辑:程序博客网 时间:2024/06/11 16:13

在我们使用函数的时候,有很多时候由于参数长度的限制而导致我们功能不完善。
比如:
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
原创粉丝点击