请老师们帮个忙,提示头文件里函数重复定义

2020-01-26 12:42发布

请老师们帮个忙吧!自己编了一个头文件,编译时提示那个头文件的C文件里KEYSCAN_DRIVE.C(8): error C231: 'Ldelay': redefinition。(函数重复定义)改了几次名字也不行,从网上查了半天也没有什么有用的结果,请老师们帮个忙指导一下吧!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
35条回答
zbazba
1楼-- · 2020-01-27 08:14
F5F5F5F5F5F5F5F5F5F5F5
zbazba
2楼-- · 2020-01-27 11:42
 精彩回答 2  元偷偷看……
MCUStudent
3楼-- · 2020-01-27 15:21
MCUStudent 发表于 2013-12-8 19:40
好的!请稍等!

主程序
//13年12月9日备份

//驱动芯片名:S6B0741 IC

#include <reg52.h>

#include "128X128LCD_Drive.H"

#include "128X128LCD_Frame0.H"

#include "Shumu.H"

#include "KeyScan_Drive.H"


void main(void)
{       
       
        intial();

        Cllcd();

        LCD_Frame0();

        Xianshima();
       
        while(1)
        {
                kaiguan();
        }
       
}
相关头文件
#ifndef __KeyScan_Drive_H__
#define __KeyScan_Drive_H__
#include <reg52.h>

#include "KeyScan_Drive.H"
extern Ldelay();
extern kaiguan();            
#endif

C文件

#include <reg52.h>
#include "KeyScan_Drive.H"

void Ldelay( )
{
        int i;
        for(i=1000;i>0;i--);
}
unsigned char kaiguan()
{
        unsigned char row;
        unsigned char tier;
        P3=0xf0;
        if((P3&0xf0)!=0xf0)
        {
                switch(P3)
                {
                        case 0x70:
                                row=1;break;
                        case 0xb0:
                                row=2;break;
                        case 0xd0:
                                row=3;break;
                        case 0xe0:
                                row=4;break;
                        default:
                                break;
                }
                Ldelay();
                P3=0x0f;
                if((P3&0x0f)!=0x0f)
                {
                        switch(P3)
                        {
                                case 0x07:
                                        tier=1;break;
                                case 0x0b:
                                        tier=2;break;
                                case 0x0d:
                                        tier=3;break;
                                case 0x0e:
                                        tier=4;break;
                                default:
                                        break;
                        }
                        return 4*(row-1)+tier;
                }
        }
        else
        {
                return 0;
        }
}
lcofjp
4楼-- · 2020-01-27 20:24
#include "KeyScan_Drive.H"
extern Ldelay();
extern kaiguan();   

把返回值类型加上。把include语句去掉。
MCUStudent
5楼-- · 2020-01-28 01:24
lcofjp 发表于 2013-12-8 19:41
往往真相只有一个,就是你在某个地方include这个c文件了。或者你的头文件里面有类似的定义。 ...

按提示应该是这样的,于是就改了函数名,还是不行。
zbazba
6楼-- · 2020-01-28 01:36
void Ldelay( );  __KeyScan_Drive_H__头文件里面 直接写这个,不要写extern 然后main的文件里面 包含这个头文件就OK了

一周热门 更多>