C编程的高速过来指点一二!

来源:百度知道 编辑:UC知道 时间:2024/06/09 03:15:22
if(PrepareSecondFun && SecondFunction)
{
if(!--PrepareSecondFun)
{
switch(SecondFunction)
{
case IKeyPower:
//作为第二功能启动
if(!gOptions.LockPowerButton)
{
POWEROFFSTART();
}
break;
case IKeyMenu:
CheckAdmin();
break;
case IKeyDuress:
TriggerDuress(0, FALSE);
break;
}
KeyBufferTimeOut=0;
KeyBufferIndex=0;
KeyBuffer[0]=0;
}
}
请高手帮我分析一下前2个if语句,尤其是第二个if语句的条件判断参数以及和第一个if语句的关系。还有第二个if条件语句中的!--PrepareSecondFun是什么意思?

分析程序,大概知道
PrepareSecondFun:表示排在SecondFunction之前的Function个数
SecondFunction:表示接下来要启动的Function的No.

第一个if语句
if(PrepareSecondFun && SecondFunction)
判断 SecondFunction 与 PrepareSecondFun是否都不为0的,如果是在会执行后面的语句,SecondFunction为0标示该Function无效,PrepareSecondFun为0,表示排在SecondFunction之前的Function个数为0,
按理,应该判断SecondFunction是否有效,同时SecondFunction不应该自己启动,应该由其它Function启动;

第二个if语句
if(!--PrepareSecondFun)
PrepareSecondFun减1后,再判断是否为0;
表示如果表示排在SecondFunction之前的Function个数恰好为1,那么就执行SecondFunction,如果PrepareSecondFun大于1,那标示还有其他Function要执行,那么SecondFunction只能继续等....