今天在学习ESP32S3开发板时,留意到一种定义类型:
这里我发现有一个类型被又被定义了一次,于是发现了兼容性类型重定义这个知识点
✅ 保持旧代码兼容性,同时统一底层实现。
📌 逐词解释
typedef:C 语言关键字,用于给已有类型起一个别名。esp_vfs_fat_mount_config_t:新的、通用的 FAT 文件系统挂载配置结构体。esp_vfs_fat_sdmmc_mount_config_t:旧的、专用于 SDMMC 的 FAT 挂载配置结构体别名(已废弃或合并)。
🎯 为什么需要这个兼容定义?
在早期 ESP-IDF 版本中:
- 挂载 SD 卡(通过 SDMMC 接口) 使用的是
esp_vfs_fat_sdmmc_mount_config_t - 挂载 SPI Flash / SD 卡(通过 SPI 接口) 使用的是
esp_vfs_fat_spiflash_mount_config_t
👉 后来,Espressif 对 FATFS + VFS 层进行了重构,统一使用一个通用结构体:
esp_vfs_fat_mount_config_t
于是:
- 旧结构体被标记为“兼容别名”
- 新代码统一使用
esp_vfs_fat_mount_config_t - 旧代码无需修改,仍能编译通过(因为 typedef 了)