首页 > 试题广场 >

阅读以下代码,找出程序的错误。

[问答题]
找错
#define MAX_SRM 256
DSN get_SRM_no()
{
    static int SRM_no;
    int I;
    for (I = 0; I < MAX_SRM; I++, SRM_NO++)
    {
        SRM_no %= MAX_SRM;
        if (MY_SRM.state == IDLE)
        {
            break;
        }
    }
    if (I >= MAX_SRM)
        return (NULL_SRM);
    else
        return SRM_no;
}

1,SRM_no没有赋初值
2,由于static的声明,使该函数成为不可重入(即不可预测结果)函数,因为SRM_no变量放在程序的全局存储区中,每次调用的时候还可以保持原来的赋值。这里应该去掉static声明。
发表于 2014-11-13 15:03:29 回复(0)