试图用新的esp-open-rtos (esp8266 sdk)编译这段代码,但看到了错误信息
app_main.c:446:10: error: variable 'size_map' has initializer but incomplete type enum flash_size_map size_map = system_get_flash_size_map();
uint32_t user_rf_cal_sector_set(void) {
enum flash_size_map size_map = system_get_flash_size_map();
uint32_t rf_cal_sec = 0;
switch (size_map) {
case FLASH_SIZE_4M_MAP_256_256:
rf_cal_sec = 128 - 5;
break;
case FLASH_SIZE_8M_MAP_512_512:
rf_cal_sec = 256 - 5;
break;
case FLASH_SIZE_16M_MAP_512_512:
case FLASH_SIZE_16M_MAP_1024_1024:
rf_cal_sec = 512 - 5;
break;
case FLASH_SIZE_32M_MAP_512_512:
case FLASH_SIZE_32M_MAP_1024_1024:
rf_cal_sec = 1024 - 5;
break;
default:
rf_cal_sec = 0;
break;
}
return rf_cal_sec;
}
尝试使用flash_size_map size_map = system_get_flash_size_map();但看到的是这样的结果。
src/app_main.c:446:5: error: unknown type name 'flash_size_map' flash_size_map size_map = system_get_flash_size_map(); ^
这样的错误发生在没有提供合适的include文件的时候。
需要注意的是,仅仅有枚举的正向声明是不够的--你必须有正确的类型定义。
请看 Godbolt.org上的一个例子 - 如果你取消第9行的注释,编译就会成功。
对于你的应用程序,你需要 #include <esp_system.h>.Esp_system.h