typedef struct _sys_info{
uint32_t dev_sn; //设备序列号
char dev_str[9]; //设备序列号字符串
net_connect_t net_connect; //0连接断开,1连接到wifi,2连接到服务器
uint32_t hw_ver;
uint32_t fw_ver;
uint8_t self_test; //自检
float voltage; //电压
float current; //电流
float temp; //温度
}sys_info_t;
//原来方法将变量声明为外部变量
extern sys_info_t sys_info;
平时将结构体变量提供给外部模块调用,很多时候是将变量加入外部声明,提供给外部文件调用脱离低耦合高内聚的原则。无意之中发现另一个很好的方法。
static sys_info_t sys_info;
sys_info_t* sys_info_ptr(void)
{
return &sys_info;
}
使用函数返回结构体指针,而且结构体可以定义为静态变量。
//外部调用很方便
work.voltage = sys_info_ptr()->voltage;
//直接赋值也很简单
sys_info_ptr()->net_connect = NET_WIFI;