分享uC/OS中全局变量定义的技巧

2020-01-01 17:54发布

本帖最后由 10xjzheng 于 2016-7-18 09:43 编辑

C语言全局变量的生命与定义 .pdf (723.58 KB, 下载次数: 110) 2016-7-18 09:33 上传 点击文件名下载附件 昨天师弟问拿了一个程序跟我说,师兄,为什么在h文件中定义会出现重复定义呢?但是我在前面的按键模块化给出的例程中就可以在h文件中定义变量而且不会出现错误呢?如下图所示,我定义了一个控制时间片的全局数组Task_Delay[NumOfTask],这个数组的声明和定义只有在include.h,然后c文件如果要用到这个数组只要#include"include.h"就可以了。
首先来说下为什么一般方法在h文件中定义变量会出现错误。include这个操作相当于把h文件整个放到#include这个文件的地方,那么如果你在一个h文件里面定义一个变量,并且把这个h文件include到不同的c文件中去,那么不同的c文件都有这个定义了!自然会出现重复定义的错误。那么为什么我就可以呢?因为我在定义这类全局变量的时候在其前面加了TASK_EXT,如上图所示,如果这样子可以,那么就很方便全局变量的定义,不然搞到要一个C文件进行定义,多个文件进行声明,这里一个就搞定。但是别玩过火了,所有的变量都这样子搞会搞死你自己的,因为全局变量定义一多,这个工程一复杂,有时调试起来就不说很方便,都不知道哪里修改了这个变量,调试了半天,才知道原来某个C文件也有代码修改这个变量。以为这个技巧是从μC/OS-III里面学到的,我之前刚好写过,下面就摘抄出来给大家看看。

QQ截图20160718093715.png (176 KB, 下载次数: 0) 下载附件 2016-7-18 09:32 上传

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
28条回答
waterghost
1楼-- · 2020-01-03 07:47
头文件中不允许变量定义。后期修改程序头都大。删除个头文件整个项目都无法编译。  基本都是楼上方法。
istars2005
2楼-- · 2020-01-03 09:55
waterx3 发表于 2016-7-18 15:34
为什么要有全局变量,有个set,get函数不好吗?

+1            
istars2005
3楼-- · 2020-01-03 13:07
WM_CH 发表于 2016-7-18 23:27
https://www.zhihu.com/question/24529415

Keil配 {MOD}方案.rar (1.82 KB, 下载次数: 43) 2016-7-19 09:03 上传 点击文件名下载附件

楼主同款
yanyi103
4楼-- · 2020-01-03 18:20
 精彩回答 2  元偷偷看……
10xjzheng
5楼-- · 2020-01-03 23:20
aaabbbad 发表于 2016-7-18 22:42
楼主请问你的编译环境调 {MOD}是怎么做到的,我调的老是不正常,如图片所示,忘指示一下 ...

论坛上有人有MDK的配置文件,将其替代你自己的,然后OK。
WM_CH
6楼-- · 2020-01-04 04:54
istars2005 发表于 2016-7-19 09:04
楼主同款

谢谢           

一周热门 更多>