全局变量的替换方式
来源:互联网 发布:keynote for windows 编辑:程序博客网 时间:2024/05/18 09:02
单文件内使用static变量或结构体 ,需要外部模块来修改参数的时候,就使用函数接口来实现
/////////////////////////////////////////////////////////////////////////////举个例子,不加互斥量,如下_static uint32_t g_cell_voltage = 600;void set_cell_voltage(uint32_t value){ g_cell_voltage = value;}uint32_t get_cell_voltage(void){ return g_cell_voltage;}//////////////////////////////////////////////////////////////////////////*//写之前先想好程序架构,分好层次,构思好每个模块的数据结构,在单文件内使用static变量或结构〿需要外部模块来修改参数的时候,就使用函数接口来实现*/
使用模块化封装配置“参数”,结构更清晰:
// 模块接口h文件中:typedef struct { Param_A; Param_B; Param_C;} User_Param_Typedef;bool ModuleName_SetParam(User_Param_Typedef *param);bool ModuleName_GetParam(User_Param_Typedef *param);//////////////////////////////////////////////////////////// // 模块实现c文件中:static User_Param_Typedef user_param;static bool user_access_locked;bool ModuleName_SetParam(User_Param_Typedef *param){ // 此处还可以增加对参数的保护特性 user_param.Param_A = param->Parma_A; user_param.Param_B = param->Parma_B; user_param.Param_C = param->Parma_C; return true;}bool ModuleName_GetParam(User_Param_Typedef *param){ // 此处还可以增加对参数的保护特性 param->Param_A = user_param.Parma_A; param->Param_B = user_param.Parma_B; param->Param_C = user_param.Parma_C; return true;}/////////////////////////////////////////////////////////////// // app文件中:...// 配置参数User_Param_Typedef user_param; // 临时变量(局部变量 ) 或 静态变量user_param.Param_A = 1;user_param.Param_B = 2;user_param.Param_C = 3;ModuleName_SetParam(&user_param);...// 获取参数ModuleName_GetParam(&user_param);/////////////////////////////////////////////////////////////////////*比如像用于配置的“参数”类的变量, 一般情况下这类模块中的变量会比较多。这种情况,如果单独封装每个变量的访问API接口,肯定不现实(接口太多了, 不符合模块接口尽量简单化原则)。可以采用类似于stm32库函数的做法, 对这些参数进行打包封装为“结构体变量”类型, 并在h文件中导出。在c文件中把这个参数定义为static类型(静态变量), 并实现读/写接口函数。如果在应用中, 仅需要修改其中一个参数怎么办呢? 其实很简单, 根据上面的类似的方法修改, 增加基于 “基地址偏移量” 读/写的接口函数即可。*/
阅读全文
0 0
- 全局变量的替换方式
- Vue全局变量的实现方式
- OverFlowButton的替换方式
- 用指针替换全局变量
- 一种全局变量的定义方式m_Data
- JS 声明全局变量的三种方式
- VUE 全局变量的几种实现方式
- Javascript全局变量的三种声明方式
- 声明全局变量的三种方式
- 替换OWA通讯录方式的方法
- C#替换桌面的两种方式
- 命令替换的两种方式$()和``
- python中一种特殊的全局变量的方式
- 定义全局变量de方式
- ASP.Net项目中全局变量使用的方式
- asp.Net项目中全局变量使用的方式
- asp.Net项目中全局变量使用的方式
- JavaScript声明全局变量三种方式的异同javascript
- Android Studio 打开项目慢的问题
- SSH整合:Struts2+Spring+Hibernate
- OSG学习:裁剪变换(2)
- hexo+github+域名 搭建自己的博客
- 美国签证B2旅游所需材料清单
- 全局变量的替换方式
- Thinkphp5学习(35)图像处理
- Xcode无法启动虚拟机项目DTAssetProviderService... DTXConnection...
- 漫画告诉你什么是DDoS攻击?
- 内部类调用局部参数为何用final关键字
- struts2 之ognl表达式与值栈(03)
- SpringMVC札集(01)——SpringMVC入门完整详细示例(上)
- 【宏观】长期中的通货膨胀与货币
- Activity的4种启动模式