全局变量的替换方式

来源:互联网 发布: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类型(静态变量), 并实现读/写接口函数。如果在应用中, 仅需要修改其中一个参数怎么办呢?  其实很简单, 根据上面的类似的方法修改, 增加基于 “基地址偏移量” 读/写的接口函数即可。*/
原创粉丝点击