函数调用问题

[复制链接]
2736|14
 楼主| supernan 发表于 2011-10-31 16:18 | 显示全部楼层 |阅读模式
一个程序里存在两个C文件.如:MASTER.C和EEPROM.C
在MASTER.C中有如下函数调用:
#define Sector1_ADDR 0x1000
uchar E2prom[5];
EEPROM_Byte_Read(5,Sector1_ADDR,E2prom);

在EEPROM.C
void EEPROM_Byte_Read(uint Len,uint Address,uchar *EEp)
以上处理,但是无法成功.
什么都不更改,只是将void EEPROM_Byte_Read(uint Len,uint Address,uchar *EEp)移到MASTER.C就成功.不知道是怎么回事,请各位大哥指点指点,不胜感激.
llljh 发表于 2011-10-31 16:23 | 显示全部楼层
做外部声明了没?
 楼主| supernan 发表于 2011-10-31 16:29 | 显示全部楼层
肯定申明了,还做了一个头文件:
#ifndef __EEPROM_H__
#define __EEPROM_H__
extern void EEPROM_Byte_Write(uint Len,uint Address,uchar *EEp);
#endif
 楼主| supernan 发表于 2011-10-31 16:45 | 显示全部楼层
真不知道哪里的问题,找了很久了?
 楼主| supernan 发表于 2011-10-31 16:45 | 显示全部楼层
顺便说下,我得E2prom数组是定义的全局变量
llljh 发表于 2011-10-31 16:57 | 显示全部楼层
你的无法成功指的是什么?
 楼主| supernan 发表于 2011-10-31 16:58 | 显示全部楼层
warning C206 missing function - prototype
warning C267 requires ansi-style prototype
说明是我没有申明,和函数没有定义:
 楼主| supernan 发表于 2011-10-31 16:59 | 显示全部楼层
#include "EEPROM.h"
#include <STC12C2052AD.H>
#include <string.h>
#include <stdio.h>
#include <absacc.h>
#include <intrins.h>
#include <math.h>

#define  uchar     unsigned char
#define  u_char    unsigned char
#define  u_short   unsigned short
#define  uint      unsigned int
#define  u_int     unsigned int
#define  u_long    unsigned long

uchar  idata  E2prom[5];

void main(void)
{
        uchar Delay_Flag;
                uchar   i;
        SYS_init();
        Delay_Flag = 1;
        while(Delay_Flag)
        {
                for(i = 0;i<250;i++)
                {
                        EEPROM_Byte_Read(5,0x1000,E2prom);
//                        EEPROM_Byte_Write(5,Sector1_ADDR,E2prom);
//                        EEPROM_Sector_Erase(Sector1_ADDR);
                }
    }
 楼主| supernan 发表于 2011-10-31 21:38 | 显示全部楼层
EEPROM.C就是这个函数了
renyaq 发表于 2011-10-31 21:38 | 显示全部楼层
估计是个低级问题
chuxh 发表于 2011-10-31 21:48 | 显示全部楼层
外部声明占用地址空间吗
mcu5i51 发表于 2011-11-1 09:37 | 显示全部楼层
整一个能说明问题的最简工程传上来,我感觉和指针类型有关
hgjinwei 发表于 2011-11-1 12:29 | 显示全部楼层
不会没有将EEPROM.C包含进工程吧?
sysdriver 发表于 2011-11-1 12:47 | 显示全部楼层
某处地方的低级错误
yjsstk 发表于 2011-11-1 14:53 | 显示全部楼层
肯定申明了,还做了一个头文件:
#ifndef __EEPROM_H__
#define __EEPROM_H__
extern void EEPROM_Byte_Write(uint Len,uint Address,uchar *EEp);
#endif

把extern 去掉
您需要登录后才可以回帖 登录 | 注册

本版积分规则

730

主题

10412

帖子

6

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