编译器出现错误

[复制链接]
3005|10
 楼主| xjdr123057 发表于 2008-6-13 17:56 | 显示全部楼层 |阅读模式
uchar
Key_Board(void)
{
    uchar a,key=0;

    P1=0X1F;
    P3=0XFF;
    if(P3==0XFF) return 0;
    else{
        Value_Flag=1;
        Delay();
        for(a=0;a<3;a++){
            P1=_crol_(0XDF,a);
            if(P32==0) break;
            if(P33==0) break;
            if(P34==0) break;
            if(P35==0) break;

.......

头文件为
#ifndef _KEYBOARD_H
#define _KEYBOARD_H
#include<reg52.h>
#include<intrins.h>
#include<stdio.h>
#define  uchar     unsigned  char
void Delay(void);
 uchar Key_Board(void);
uchar Key_Value(void);
sbit P32=P3^2;
sbit P33=P3^3;
sbit P34=P3^4;
sbit P35=P3^5;

 bit Value_Flag=0;

#endif

编译器出现:

Build target 'Target 1'
compiling keyboard.c...
compiling ceshi2.c...
linking...
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
    SYMBOL:  VALUE_FLAG
    MODULE:  ceshi2.obj (CESHI2)
Program Size: data=10.2 xdata=0 code=272
Target not created
主程序测试按键标志(Value_Flag),删除这个标志之后就可以编译
 楼主| xjdr123057 发表于 2008-6-13 17:58 | 显示全部楼层

还有

键盘其他正常,为什么出现这个错误。如果,需要源代码,可以发送到邮箱
dld2 发表于 2008-6-13 18:30 | 显示全部楼层

不要在头文件定义变量

hotpower 发表于 2008-6-13 18:31 | 显示全部楼层

楼上正点~~~

zllfdd 发表于 2008-6-13 19:48 | 显示全部楼层

`````

有人说声明和定义不同,声明可以多次,定义只能一次。
 楼主| xjdr123057 发表于 2008-6-13 20:21 | 显示全部楼层

谢谢了

已经解决了,不能在头文件里声明变量
平常人 发表于 2008-6-13 22:08 | 显示全部楼层

3楼正点,6楼误点

“不要在头文件定义变量”,不是“不能在头文件里声明变量”,这两句话意思完全不一样。
x512775199 发表于 2008-6-13 22:19 | 显示全部楼层

呵呵

还是需要咬文嚼字
wlsui 发表于 2008-6-13 22:34 | 显示全部楼层

定义和声明,

貌似很多人都不注意其间的区别
建议去看看潭浩强的那本书

x512775199 发表于 2008-6-13 22:35 | 显示全部楼层

嗯 谭浩强的书够仔细

 楼主| xjdr123057 发表于 2008-6-14 22:05 | 显示全部楼层

呵呵

学了几年的C,自认为很透了,没有想到一实践,就显示出来了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

16

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部