存取部分的代码能不能优化一下
时间: 2024-03-17 11:41:44 浏览: 26
当然可以,这里给出一个稍微优化了一些的代码,可以减少一些重复的代码和字符串拷贝操作:
```c++
#include <Preferences.h>
Preferences preferences;
void saveWifiConfig(const WifiConfig& wifiConfig) {
preferences.begin("wifi_config", false);
preferences.putBytes("wifi_config_data", &wifiConfig, sizeof(WifiConfig));
preferences.end();
}
WifiConfig loadWifiConfig() {
preferences.begin("wifi_config", true);
WifiConfig wifiConfig;
preferences.getBytes("wifi_config_data", &wifiConfig, sizeof(WifiConfig));
preferences.end();
return wifiConfig;
}
```
这里使用了 `putBytes()` 和 `getBytes()` 方法将结构体数据保存到 Flash 中,避免了对每个结构体成员进行单独的存储操作,也避免了字符串拷贝操作。
需要注意的是,在 `preferences.begin()` 中,第二个参数为 `false` 表示只读取 Flash 中已经存在的数据,不创建新的数据,而在 `loadWifiConfig()` 函数中,第二个参数为 `true` 表示如果 Flash 中没有该数据,则创建新的数据。
另外,这里的 `saveWifiConfig()` 函数传入的参数为 `const WifiConfig&`,表示使用引用传递结构体,避免了结构体的复制操作,提高了代码的效率。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)