兼容性类型重定义

45 阅读1分钟

今天在学习ESP32S3开发板时,留意到一种定义类型:

QQ图片20250915193239.png

QQ图片20250915193249.png

QQ图片20250915193254.png

这里我发现有一个类型被又被定义了一次,于是发现了兼容性类型重定义这个知识点

保持旧代码兼容性,同时统一底层实现。

📌 逐词解释

  • 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 了)