写的程序一摸一样但是就是报错,找了半天又重新写了一遍就好了有人能讲讲里面其中的原因么

下面的问题我不是遇到一次两次,好多次实在找不出来问题,只能重新从以前的文档重新编写


unsigned char Key_apply(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
{
    
    //////////////////////////未解之谜程序:一摸一样但是这里面的就是会报错////////////////////////////////////////////
//        if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)==KEY_ON);
//            {
//                        while(GPIO_ReadInputDataBit( GPIOx,  GPIO_Pin)==KEY_ON);
//                        return KEY_ON;
//            
//            }
//        else return KEY_ON;
    //////////////////////////////////////////////////////////////////////
        if(GPIO_ReadInputDataBit(GPIOx, GPIO_Pin)==KEY_ON)
        {
                while((GPIO_ReadInputDataBit(GPIOx, GPIO_Pin)==KEY_ON));
                return KEY_ON;
        }
        else    return    KEY_OFF;

}

img

img

img

第22行,if后有分号

while(GPIO_ReadInputDataBit( GPIOx, GPIO_Pin)==KEY_ON);
编译错误,少一个“)”,下面正确写法
while(GPIO_ReadInputDataBit( GPIOx, GPIO_Pin)==KEY_ON));

有可能是你括号的问题,因为你另外一个帖中提醒是需要一个“)”,你可能用了中文输入括号