错误:变量'size_map'有初始化器,但类型不完整。

问题描述 投票:0回答:1

试图用新的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();
 ^
c esp8266
1个回答
0
投票

这样的错误发生在没有提供合适的include文件的时候。

需要注意的是,仅仅有枚举的正向声明是不够的--你必须有正确的类型定义。

请看 Godbolt.org上的一个例子 - 如果你取消第9行的注释,编译就会成功。

对于你的应用程序,你需要 #include <esp_system.h&gt.Esp_system.h

© www.soinside.com 2019 - 2024. All rights reserved.