本帖最后由 jiang887786 于 2015-3-14 15:52 编辑
老生常谈,还是代码复用问题,其实也不仅限于CW5.1。我的问题是我有下面的代码(/*循环渐进法求平均值*/),我想一个工程文件里面多次使用到它。一个使用到6-7次一个工程里面,问题是现在我要使用一次(一个函数需要调用它处理数据),我就要复制一个和它相同的函数而且要改名!,比如改成PL_MeanValue_Len50、PL_MeanValue_Len51、PL_MeanValue_Len5n等等。那么请问版主我怎么办才能在所有调用它的地方都调用同一个函数PL_MeanValue_Len50就行了呢?而且返回值还不回出错?经过实践证明,都调用相同的函数返回值会不对。那么我该怎么解决这个问题呢?请版主和大神支招!谢谢了!
/*循环渐进法求平均值*/
word PL_MeanValue_Len50 /*循环渐进法求平均值*/
(
word Input,
byte Par_Length,
byte Reset)
{
word count=0;
static word MidValue [50];
word Temp_Length;
word i;
dword Temp_Output;
volatile word Output;
if (Par_Length>50) {
Temp_Length=50;}
else
Temp_Length=Par_Length;
if (Temp_Length<2)
Temp_Length=2;
if (Reset)
Output=Input;
else
if (count<Temp_Length) {
count=count+1;
MidValue[count]=Input;
Temp_Output=0;
for(i=1;i<=count;i++)
{Temp_Output=Temp_Output+MidValue;}
Output=(unsigned int)((float)(Temp_Output)/(float)(count));}
else
{for(i=1;i<=Temp_Length-1;i++ )
{MidValue=MidValue[i+1];}
MidValue[Temp_Length]=Input;
Temp_Output=0;
for(i=1;i<=Temp_Length;i++)
{Temp_Output=Temp_Output+MidValue;}
Output=(unsigned int)((float)(Temp_Output)/(float)(Temp_Length));
return Output;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
版主,帮我看看怎么搞定这个问题呢?
算法调用我不是太懂,我就说说我的理解吧。
你说多个地方调用同一个函数,但是返回值出错啊,我想是不是多个函数共同占有一个函数,导致得出错误的结果啊,
那么对应能不能像操作系统一样,对这个函数设置成exclusive,同一时间只服务一个调用函数呢
一周热门 更多>