全局变量的处理

全局变量在程序中很难避免,一般的处理办法主要有四种:

  1. extern最常用的做法, 还是来源于c语言的习惯,
  2. 第二种处理方案,一个类要使用全局变量可以作为构造函数的参数传入类中,举个例子:在做Trackball跟踪球的时候,类里面必须保持有窗口的尺寸,也就只是两个int类型的变量,完全可以作为TrackBall的构造参数传入:
  3. 单件类,设计模式中的Singleton模式,类内部定义一个static类型的全局变量,把这个对象的名字空间限制在了这个类中。需要使用对象,只需getInstance函数请求即可,使用很方便。CEGUI中对各种资源的管理就是使用了这种单件设计模式。
  4. 最后一种我感觉是最合适的。增加一个Global类,对所有的全局变量统一管理,将全局变量定义为static,并且私有化,提供静态成员的操控和访问方法。在<大规模C++程序设计>一书中也是这么建议的。

当然了,最根本的解决方法还是,尽可能的减少全局变量使用。

FreeRTOS有一些全局变量需要特殊的处理方式: 1. 系统时钟变量:FreeRTOS的系统时钟变量是在vTaskStartScheduler()函数初始化的。如果需要改变系统时钟速度,可以在该函数调用之前修改变量的值。 2. 系统任务列表:FreeRTOS的任务列表是一个全局变量,用于存储所有创建的任务的指针。在任务创建时,任务指针将被添加到该列表。如果需要遍历所有任务,可以使用该列表。需要注意的是,该列表在多任务环境下可能会被多个任务同时访问,因此需要使用锁进行保护。 3. 系统断嵌套计数器:FreeRTOS使用一个全局变量来记录断嵌套的层数。在处理程序,该变量将被递增,以表示当前正在处理一个断。当处理程序完成时,该变量将被递减回原始值。需要注意的是,在多断环境下,可能会出现多个断同时发生的情况,因此需要使用锁进行保护。 4. 系统时间戳:FreeRTOS支持获取绝对时间戳。系统时间戳是一个全局变量,用于记录系统启动后经过的毫秒数。需要注意的是,在多任务环境下,可能会出现多个任务同时访问该变量的情况,因此需要使用锁进行保护。 5. 系统任务数量:FreeRTOS支持在运行时查询当前系统存在的任务数量。该信息存储在一个全局变量,可以通过调用函数xTaskGetNumberOfTasks()来获取。需要注意的是,在多任务环境下,该变量可能会被多个任务同时访问,因此需要使用锁进行保护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值