新手求助!!keil 51错误:error C129 :missing';'before 'a'
我想把LED.c中的变量‘a’定义成外部变量,以便被工程中的其他文件共享,但在调试时,出现了如标题所示的报警信息。
我的LED.c文件和LED.h文件分别如下(源程序全部是在英文状态输入的):
LED.C源程序:
#include <reg52.h>
#include <TimerT0.h> //定时器中断程序的头文件
#include <Typedef.h> //类型定义头文件
sbit led_0=P0^0 ;
uint a;
/*LED闪烁函数*/
void led_display()
{
if (sys_flag_500ms == 1) /*500ms时间到。时标sys_flag_500ms 由定时器中断产生*/
{
sys_flag_500ms = 0 ;/*时标清零*/
led_0 = ~led_0 ; /*LED以0.2Hz的频率闪烁 */
a++;
}
}
LED.h文件:
#ifndef _LED_H_
#define _LED_H_
extern void led_display();
extern uint a;
#endif
说明:
1)除了LED.C文件和LED.h文件外,还有另外几个文件,共同组成一个完整的LED闪烁程序,在此篇幅所限没贴出。
2)在没有加入uint a;和ertern uint a;之前,整个程序是正常工作的
3)但是在加入uint a;和ertern uint a;之后,程序就会出现:error C129 :missing';'before 'a' 的报警信息,同时我也详细检查过,绝不是在‘a’的前面缺少了‘;’。
非常感谢有高人指点,不胜感激!
[解决办法]
uint 没有定义。在LED.h中
#include <Typedef.h> //类型定义头文件
[解决办法]
试一下在LED.h头文件中添加uint的宏定义。
或者如2楼所说添加那个头文件。
[解决办法]
sbit led_0=P0^0 ;
感觉你的这个分号像是全角字符
得用英文半角
[解决办法]
If you don't want to change LED.h, you can try to change the way you include header files in main.c, like the following:
#include <reg52.h>
#include <timerT0.h>
#include <typedef.h>
#include <led.h>
------解决方案--------------------
头文件的顺序。。。。。如果它们没有依赖性就无所谓,否则被引用的要放在前面。