打印

关于C51 struct 体的吐血问题求C语言大虾解答。

[复制链接]
2709|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kama_ya|  楼主 | 2011-6-15 15:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
举例 我在a.h 中定义
  typedef struct struct2_TimeData
{
        unsigned char yearh;
        unsigned char weekday;
        unsigned char yearl;
        unsigned char month;
        unsigned char day;
        unsigned char hour;
        unsigned char minute;
        unsigned char second;
} struct_TimeData;
extern struct_TimeData CurrentTime;

在a.c中使用 CurrentTime.yearh 等等编译不报错。

要想在b.c使用哪个机构体,于是乎把a.h头文件包含进来,编译无错。

问题来了一mack就报错 Error[e46]: Undefined external "CurrentTime" referred in iic  

编译环境: IAR Embedded 5

C语言大哥请指教,以前Keil也出现过,实在找不到方法就去掉结构体改成全局变量,今天在IAR也不行。

相关帖子

沙发
kama_ya|  楼主 | 2011-6-15 16:27 | 只看该作者
我顶,哪位大侠指出明路 我裸奔。  :lol

使用特权

评论回复
板凳
HWM| | 2011-6-15 17:40 | 只看该作者
extern struct_TimeData CurrentTime;

只是说明你使用了一个外部变量(这里就是那个结构),而尚未真正地分配有实际的变量实体。你需要在某程序(如主程序)模块中增加一个变量的实体定义,即:

struct_TimeData CurrentTime;

使用特权

评论回复
地板
mmax| | 2011-6-15 21:19 | 只看该作者
能编译过只能说明没有语法错误
连接报错说明没有实体。

使用特权

评论回复
5
xiaoing| | 2011-6-15 21:33 | 只看该作者
本帖最后由 xiaoing 于 2011-6-15 22:34 编辑

在a.c中把a.h “include”进来,然后定义结构体全局变量struct_TimeData CurrentTime;
然后再在b.c中把a.h“include”进来,就可以访问CurrentTime变量了。以前用DS1302就是这么编的。

使用特权

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

本版积分规则

120

主题

551

帖子

2

粉丝