飞狐C语言接口函数返回参数的问题,急

下面是飞狐,分析家C语言接口的一个例子,小的有一点不解,盼南客或各位老师说明.
谢谢啦

__declspec(dllexport) int WINAPI MYMAVAR(CALCINFO* pData)
{
if(pData->m_pfParam1 && pData->m_pfParam2 && //参数12有效
pData->m_nParam1Start>=0 && //参数1为序列数
pData->m_pfParam3==NULL) //有2个参数
{
const float* pValue = pData->m_pfParam1; //参数1
int nFirst = pData->m_nParam1Start; //有效值起始位
float fParam = *pData->m_pfParam2; //参数2
int nPeriod = (int)fParam;

if( nFirst >= 0 && nPeriod > 0 )
{
float fTotal;
int i, j;
for ( i = nFirst+nPeriod-1; i < pData->m_nNumData; i++ )
{
fTotal = 0.0f;
for ( j=0; j < nPeriod; j++ ) //累加
fTotal += pValue[i-j];
pData->m_pResultBuf = fTotal/nPeriod;//平均
}
return nFirst+nPeriod-1;
}
}
return -1;
}

倒数第四行return nFirst+nPeriod-1是什么意思,为什么要返回它?不是说函数返回的数值在
pData->m_pResultBuf里面吗?
我也来说两句 查看全部回复

最新回复

  • 清扬 (2008-6-29 23:45:59)

    控制返回数值的起始位置。
    return 0;
    起始位置在第一根K线。
    return 3;
    起始位置在第四根K线。
    起始位置也可以用变量(表达式)来表示。
  • nihs (2008-6-30 14:26:04)

    谢谢清扬老师:
    这里为什么要返回K线的起始位置?在实际编程应用中我们应返回那一根K线的位置?为什么要返回这个位置?这些问题如果不清楚的话,就不知如何使用了.
  • nihs (2008-6-30 14:31:33)

    我正在用这个接口编写,所以急盼回答,小的先致谢了.
  • kuhasu (2008-7-04 08:57:40)

    再出本书吧
  • 清扬 (2008-7-04 11:37:38)

    QUOTE:

    原帖由 nihs 于 2008-6-30 14:26 发表
    谢谢清扬老师:
    这里为什么要返回K线的起始位置?在实际编程应用中我们应返回那一根K线的位置?为什么要返回这个位置?这些问题如果不清楚的话,就不知如何使用了.
    这还不简单,如果没有这个返回位置的话,BUG就要满天飞了。
    在很多情况下,比如说K线根数共5根,而你要输出10日均线,那么就
    return -1;
    什么都不返回。
    比如说K线根数共20根,你要输出10日均线,那么就要
    return 9;
    在第十根K线上才开始有输出值。
    总之,要保证在每根K线上,有一个确定的输出值。
  • 清扬 (2008-7-04 11:45:18)

    比如参数可调的话,要做X日均线。返回位置应该为:
    return x-1;

    至于序列的均线,
    int nFirst = pData->m_nParam1Start; //有效值起始位--这是序列的起始位置
    float fParam = *pData->m_pfParam2; //参数2--这是均线的参数
    int nPeriod = (int)fParam;
    所以,最后的起始位置应该为:
    return nFirst+nPeriod-1;
  • 清扬 (2008-7-04 11:54:52)

    如果K线总根数比起始位置还少,怎么办?
    在示例代码中,是在循环中进行限制的:
    for ( i = nFirst+nPeriod-1; i < pData->m_nNumData; i++ )
    其实,在程序开始部分,用if来进行限制,会使思路更清晰,程序的BUG出现可能性会更少。
  • nihs (2008-7-04 13:24:30)

    明白了,谢谢清扬老师