打印

MULTIPLE PUBLIC DEFINITIONS

[复制链接]
12035|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tong2gang|  楼主 | 2007-7-16 18:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
麻烦各位大侠.
我在头文件里定义了一些全局变量
然后其它两个文件包含了这个头文件并都使用了那些全局变量
单个文件编译的时候是没有错误的,而在整个工程链接的时候,
结果出现了如题的错误:
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
麻烦各位大侠指点一下,有什么解决方**?

相关帖子

沙发
微风| | 2007-7-16 19:40 | 只看该作者

方法很简单

定义头文件的时候这样
#ifndef __文件名_H__
#define __文件名_H__

头文件内容

#endif

使用特权

评论回复
板凳
tong2gang|  楼主 | 2007-7-16 21:23 | 只看该作者

有啊

有啊,我有加那条件编译语句的啊,下面是我的代码,你可以看一下
#ifndef _SNAKE_H_
#define _SNAKE_H_    
//***************************
#ifdef SNAKE_GLOBALS
    #include<reg52.h>
    #include"TG12232G.H"
    #define SNAKE_EXT
#else 
    #define SNAKE_EXT extern     
#endif
//****************************
#define uint8 unsigned char
#define uint16 unsigned int
//***************************
//#ifdef SNAKE_GLOBALS
    #define LEFT 1
    #define RIGHT 2
    #define SNAKE_UP 3
    #define SNAKE_DOWN 4
    uint8 code SNAKEMASK[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
    extern void DisplayPoint(uint8 x,uint8 y,uint8 by);
/*****************************************    先定义全局变量    ******************************************/
    //点的结构体
    struct Point
    {
        uint8 x;  //该点坐标值
        uint8 y;
        uint8 disflag;//标识是否这本轮已经被显示过
    }SNAKE[10],Food;//结点指针,用于表示蛇的身体
    
    uint8 LENGTH;//表示蛇身长度
    uint8 direction=RIGHT;
    uint16 Record;//最高得分记录
    uint16 Score;//现在得分
//#endif
    uint16 Speed;//游戏速度,每一格100ms
//按direction指示的方向将蛇按移动前进一格
    SNAKE_EXT uint8 SnakeMove();
//显示全屏内容
    SNAKE_EXT void View();
//显示外面方框
    SNAKE_EXT void SnakeRTG();
//游戏参数初始化
    SNAKE_EXT void SnakeInit();
#endif //_SNAKE_H_

使用特权

评论回复
地板
微风| | 2007-7-16 22:13 | 只看该作者

搞搞那个数组,赋值的语句不要在头文件里出现

使用特权

评论回复
评论
lmc123ms 2014-5-26 12:02 回复TA
说的好,我就是出现了赋值语句,才编译错误的。 
5
tong2gang|  楼主 | 2007-7-17 00:00 | 只看该作者

问题已经解决

问题已经解决啦,谢谢两位
全局变量还是在一个.c文件中定义好,然后另一个要用的话就extern就行了

使用特权

评论回复
6
wtfshxkj| | 2007-7-17 07:26 | 只看该作者

重复定义

使用特权

评论回复
7
古道热肠| | 2007-7-17 09:14 | 只看该作者

楼主是在整“贪吃蛇”代码吧!

   这个课题很好玩,当年做毕业设计就写这个,还得了个“优良”,是用QB写的,只写了500多行源代码就完成功能了。可内含的数据结构、动画理念、PC机绘图等知识却很丰富的。
  不妨将代码拿出来晒晒。挤挤水分,单片机资源跟PC机比,差远了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

26

帖子

0

粉丝