Keil C51编译报错error C141: syntax error

错误代码:

 

1 typedef unsigned char uchar
2 uchar KeyRowColumnScan()
3 {
4     GPIO_KEY = 0x0f;
5     uchar key_value = 0; // 报错行
6     // 省略
7     return key_value;
8 }

 

错误信息:

key_array.c(44): error C141: syntax error near ‘uchar’函数

错误缘由:

因为Keil、ADS等某些遵循老的C标准的编译器,在函数定义的内部,必须把全部的局部静态变量和自动变量都声明/定义了以后,而后才能开始后续的代码书写,不然编译器会报错,将代码更改以下后,编译正确。spa

1 typedef unsigned char uchar
2 uchar KeyRowColumnScan() 
3 {
4     uchar key_value = 0;  // 必须在函数开始出定义全部变量
5     GPIO_KEY = 0x0f;
6     // 省略
7     return key_value;
8 }