打印

一个程序里存在两个C文件

[复制链接]
866|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangpe|  楼主 | 2017-1-30 11:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个程序里存在两个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就成功.不知道是怎么回事,请各位大哥指点指点,不胜感激.
沙发
langgq| | 2017-1-30 11:08 | 只看该作者
做外部声明了没?

使用特权

评论回复
板凳
wangpe|  楼主 | 2017-1-30 11:52 | 只看该作者
肯定申明了,还做了一个头文件:
#ifndef __EEPROM_H__
#define __EEPROM_H__
extern void EEPROM_Byte_Write(uint Len,uint Address,uchar *EEp);
#endif

使用特权

评论回复
地板
wangpe|  楼主 | 2017-1-30 11:54 | 只看该作者
真不知道哪里的问题,找了很久了?

使用特权

评论回复
5
wangpe|  楼主 | 2017-1-30 11:58 | 只看该作者

顺便说下,我得E2prom数组是定义的全局变量

使用特权

评论回复
6
zhanglli| | 2017-1-30 12:00 | 只看该作者
你的无法成功指的是什么?

使用特权

评论回复
7
wangpe|  楼主 | 2017-1-30 12:10 | 只看该作者
warning C206 missing function - prototype
warning C267 requires ansi-style prototype
说明是我没有申明,和函数没有定义:

使用特权

评论回复
8
wangpe|  楼主 | 2017-1-30 12:12 | 只看该作者
#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);
                  }
      }

使用特权

评论回复
9
wangpe|  楼主 | 2017-1-30 12:14 | 只看该作者
EEPROM.C就是这个函数了

使用特权

评论回复
10
hanwe| | 2017-1-30 12:18 | 只看该作者
估计是个低级问题

使用特权

评论回复
11
yufe| | 2017-1-30 12:20 | 只看该作者

外部声明占用地址空间吗

使用特权

评论回复
12
llia| | 2017-1-30 12:22 | 只看该作者
不会没有将EEPROM.C包含进工程吧?

使用特权

评论回复
13
langgq| | 2017-1-30 12:25 | 只看该作者
肯定申明了,还做了一个头文件:
#ifndef __EEPROM_H__
#define __EEPROM_H__
extern void EEPROM_Byte_Write(uint Len,uint Address,uchar *EEp);
#endif

把extern 去掉

使用特权

评论回复
14
langgq| | 2017-1-30 12:27 | 只看该作者
内容不动  汇编窗口debug看看

使用特权

评论回复
15
wangzsa| | 2017-1-30 17:48 | 只看该作者

1.涉及到的C文件和H文件有没有包含在工程里面
2.MASTER.C有没有包含头文件?

使用特权

评论回复
16
zhuww| | 2017-1-30 17:50 | 只看该作者
3.你说的全局变量是定义在哪个文件,在另一个C文件中有没有做声明?

使用特权

评论回复
17
zhanglli| | 2017-1-30 17:51 | 只看该作者
楼主你外部声明函数名字写错了。

使用特权

评论回复
18
lium| | 2017-1-30 17:53 | 只看该作者

.H文件的环境变量有没有添加。

使用特权

评论回复
19
wangpe|  楼主 | 2017-1-30 17:57 | 只看该作者
哦,那我就知道怎么回事了,多谢大家,结贴了哈

使用特权

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

本版积分规则

938

主题

9837

帖子

2

粉丝