单片机报错未定义该变量

这个keil5一直报错说我没有定义变量

#include 
        #include "delay.h"
        
        unsigned char MatrixKey()  {
        unsigned char KeyNumber = 0;
        P1 = 0xff;
        P1_3 = 0;
        if (P1_7 == 0){delay(20);while (P1_7 == 0);    delay (20);KeyNumber = 1;}
        if (P1_6 == 0){delay(20);while (P1_6 == 0);    delay (20);KeyNumber = 5  ;}
        if (P1_5 == 0){delay(20);while (P1_5 == 0);    delay (20);KeyNumber = 9;}
        if (P1_4 == 0){delay(20);while (P1_4 == 0);    delay (20);KeyNumber = 13;}

            P1 = 0xff;
        P1_2 = 0;
        if (P1_7 == 0){delay(20);while (P1_7 == 0);    delay (20);KeyNumber = 2;}
        if (P1_6 == 0){delay(20);while (P1_6 == 0);    delay (20);KeyNumber = 6  ;}
        if (P1_5 == 0){delay(20);while (P1_5 == 0);    delay (20);KeyNumber = 10;}
        if (P1_4 == 0){delay(20);while (P1_4 == 0);    delay (20);KeyNumber = 14;}

            P1 = 0xff;
        P1_1 = 0;
        if (P1_7 == 0){delay(20);while (P1_7 == 0);    delay (20);KeyNumber = 3;}
        if (P1_6 == 0){delay(20);while (P1_6 == 0);    delay (20);KeyNumber = 7  ;}
        if (P1_5 == 0){delay(20);while (P1_5 == 0);    delay (20);KeyNumber = 11;}
        if (P1_4 == 0){delay(20);while (P1_4 == 0);    delay (20);KeyNumber = 15;}

            P1 = 0xff;
        P1_0 = 0;
        if (P1_7 == 0){delay(20);while (P1_7 == 0);    delay (20);KeyNumber = 4;}
        if (P1_6 == 0){delay(20);while (P1_6 == 0);    delay (20);KeyNumber = 8  ;}
        if (P1_5 == 0){delay(20);while (P1_5 == 0);    delay (20);KeyNumber = 12;}
        if (P1_4 == 0){delay(20);while (P1_4 == 0);    delay (20);KeyNumber = 16;}
        return KeyNumber ;
        }

matrixkey.c(22): error C202: 'KeyNumber': undefined identifier
matrixkey.c(23): error C202: 'KeyNumber': undefined identifier
matrixkey.c(24): error C202: 'KeyNumber': undefined identifier

我明明定义了,究竟是哪里错了?

从贴出的部分看不出问题。
确认几点:
1,贴出的部分是不是就是编译器提示的matrixkey.c
2,是不是从22行才开始报错?如果是,建议检查一下P1_1和P1_7的定义。

定义类型和使用类型不一致
字符型

unsigned char KeyNumber = 0

整型

KeyNumber = 3