[求助] 求助关于全局变量的问题

龙拳ko   2015-10-8 08:52 楼主
我用定时器做计时,在 main.c 定义了一个全局变量  extern  unsigned int flag ,在 while 里面调用进行判断;
然后在 timer_user.c 的中断服务函数也用到了 flag ,但编译提示错误, 求解答

回复评论 (12)

2推荐 sint27 

引用: 龙拳ko 发表于 2015-10-8 09:09
提示了这一句,那有什么方法使同一个变量在两个 .c 文件能同时调用到呢??

看这信息应该就是没定义了;
你在main.C中定义 unsigned int flag;
然后在 timer_user.c 声明 extern  unsigned int flag;
这样应该就可以了
点赞  2015-10-8 09:24
提示的是什么错误呢,有截图吗感觉是缺少定义,extern是对外声明,并不是定义 本帖最后由 sint27 于 2015-10-8 09:01 编辑
点赞  2015-10-8 08:59
把报错信息贴上来,给大家看一看。。。。
分享铸就美好未来。。。
点赞  2015-10-8 09:03
引用: sint27 发表于 2015-10-8 08:59
提示的是什么错误呢,有截图吗感觉是缺少定义,extern是对外声明,并不是定义

捕获.JPG
提示了这一句,那有什么方法使同一个变量在两个 .c 文件能同时调用到呢??
点赞  2015-10-8 09:09
捕获.JPG
还有一个问题,我用CS+ 的代码生成器,每次改动生成器的选项后点生成代码后,
打开每个.c文件都会提示这一句,我都是点yes,但觉得好麻烦,请问有方法解决吗
点赞  2015-10-8 09:26
引用: sint27 发表于 2015-10-8 09:24
看这信息应该就是没定义了;
你在main.C中定义 unsigned int flag;
然后在 timer_user.c 声明 extern  ...

谢谢,解决了。我楼下还有一个问题,麻烦看看
点赞  2015-10-8 09:29
引用: 龙拳ko 发表于 2015-10-8 09:09
提示了这一句,那有什么方法使同一个变量在两个 .c 文件能同时调用到呢??

extern是表示全局变量在其他文件进行定义,可在本文件使用的意思。你只是进行了外部变量的声明,并没有进行定义啊。可以在main函数里面进行定义下,然后在中断文件中进行extern声明。
玩板看这里: https://bbs.eeworld.com.cn/elecplay.html EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
点赞  2015-10-8 09:30
引用: 龙拳ko 发表于 2015-10-8 09:26
还有一个问题,我用CS+ 的代码生成器,每次改动生成器的选项后点生成代码后,
打开每个.c文件都会提示这 ...

没用过你说的工具,帮不上忙,查查看所用IDE有没有相关设置项
点赞  2015-10-8 09:50
引用: sint27 发表于 2015-10-8 09:50
没用过你说的工具,帮不上忙,查查看所用IDE有没有相关设置项

好的,谢啦
点赞  2015-10-8 10:00
引用: sint27 发表于 2015-10-8 09:24 看这信息应该就是没定义了; 你在main.C中定义 unsigned int flag; 然后在 timer_user.c 声明 extern ...
也可以两个都有 extern 然后编译器就找这两个中最开始的作为定义,后面对就是申明。 本帖最后由 damiaa 于 2015-10-8 12:51 编辑
点赞  2015-10-8 12:49
引用: damiaa 发表于 2015-10-8 12:49
也可以两个都有 extern 然后编译器就找这两个中最开始的作为定义 ...

我还特意去试了一下,这种方法不行的,不过测试芯片不是瑞萨芯片。
至少我说的那种方法在任意芯片都是可行的
点赞  2015-10-8 13:33
其实我感觉您应该去看extern这个关键字的用法,一般在timer_user.c  定义 unsigned int flag的变量,然后main函数中引用不就可以了?
点赞  2015-10-8 23:06
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复