编程过程中的细小问题防不胜防
多个平行if使用时末尾的else也会执行,会造成程序错误。
if(oeo->num==2)
{
if(oeo->cmdtcon==1){ write_reg(oeo->pnum,REG_CON,0x0f);}
if(oeo->cmdtcon==0){ write_reg(oeo->pnum,REG_CON,0x00);}
if(oeo->cmdtcon==3) { read_reg(imod,REG_CON,&value);
if(value==0x0f){oeo_write_reg(oeo->num,REG_CON,0x00);}
else{oeo_write_reg(oeo->num,REG_CON,0x0f);}
}
else {goto exit_1;}
}
在使用时,如果oeo->cmdtcon不等于3的话,最后都会转移至exit_1函数,违背了编程者的本意,究其原因,else只和最近的一个if配对,所以在使用多个平行if时尽量不使用else,或者改为else if形式。
if(oeo->num==2)
{
if(oeo->cmdtcon==1){ write_reg(oeo->num,REG_CON,0x0f);}
else if(oeo->cmdtcon==0){ write_reg(oeo->num,REG_CON,0x00);}
else if(oeo->cmdtcon==3) { read_reg(imod,REG_CON,&value);
if(value==0x0f){oeo_write_reg(oeo->num,REG_CON,0x00);}
else{oeo_write_reg(oeo->num,REG_CON,0x0f);}
}
else {goto exit_1;}
}