Type conversion - unsigned to signed int/char

C语言类型转换解析
本文详细解释了C语言中不同类型变量进行比较时的隐式类型转换规则,包括整数提升和常规算术转换等概念,并通过具体示例阐述了这些规则如何影响程序的输出结果。

Q:

I tried the to execute the below program:

#include <stdio.h>

int main() {
    signed char a = -5;
    unsigned char b = -5;
    int c = -5;
    unsigned int d = -5;

    if (a == b)
        printf("\r\n char is SAME!!!");
    else
        printf("\r\n char is DIFF!!!");

    if (c == d)
        printf("\r\n int is SAME!!!");
    else
        printf("\r\n int is DIFF!!!");

    return 0;
}

For this program, I am getting the output:

char is DIFF!!! int is SAME!!!

Why are we getting different outputs for both?
Should the output be as below ?

char is SAME!!! int is SAME!!!

A1:

This is because of the various implicit type conversion rules in C. There are two of them that a C programmer must know: the usual arithmetic conversions and the integer promotions (the latter are part of the former).

In the char case you have the types (unsigned char) == (signed char). These are both small integer types. Other such small integer types are bool and short. The integer promotion rules state that whenever a small integer type is an operand of an operation, its type will get promoted to int, which is signed. This will happen no matter if the type was signed or unsigned.

In the case of the signed char, the sign will be preserved and it will be promoted to an intcontaining the value -5. In the case of the unsigned char, it contains a value which is 251 (0xFB ). It will be promoted to an int containing that same value. You end up with

if( (int)-5 == (int)251 )

In the integer case you have the types  (unsigned int) == (signed int) . They are not small integer types, so the integer promotions do not apply. Instead, they are balanced by  the usual arithmetic conversions , which state that if two operands have the same "rank" (size) but different signedness, the signed operand is converted to the same type as the unsigned one. You end up with

if( (unsigned int)-5 == (unsigned int)-5)

A2:

Cool question!

The int comparison works, because both ints contain exactly the same bits, so they are essentially the same. But what about the chars?

Ah, C implicitly promotes chars to ints on various occasions. This is one of them. Your code saysif(a==b), but what the compiler actually turns that to is:

if((int)a==(int)b) 

(int)a is -5, but (int)b is 251. Those are definitely not the same.

EDIT: As @Carbonic-Acid pointed out, (int)b is 251 only if a char is 8 bits long. If int is 32 bits long, (int)b is -32764.

REDIT: There's a whole bunch of comments discussing the nature of the answer if a byte is not 8 bits long. The only difference in this case is that (int)b is not 251 but a different positive number, which isn't -5. This is not really relevant to the question which is still very cool.

From: http://stackoverflow.com/questions/17312545/type-conversion-unsigned-to-signed-int-char
* 正在执行任务: D:\Espressif\tools\ninja\1.12.1\ninja.EXE [2/19] Performing build step for 'bootloader' [1/1] C:\Windows\system32\cmd.exe /C "cd /D C:\Users\Lenovo\esp32_electronic_piano\build\bootloader\esp-idf\esptool_py && D:\Espressif\python_env\idf5.5_py3.11_env\Scripts\python.exe D:/Espressif/frameworks/esp-idf-v5.5/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x1000 C:/Users/Lenovo/esp32_electronic_piano/build/bootloader/bootloader.bin" Bootloader binary size 0x6680 bytes. 0x980 bytes (8%) free. [4/19] Building C object esp-idf/ttp229/CMakeFiles/__idf_ttp229.dir/src/ttp229.c.obj FAILED: esp-idf/ttp229/CMakeFiles/__idf_ttp229.dir/src/ttp229.c.obj ccache D:\Espressif\tools\xtensa-esp-elf\esp-14.2.0_20241119\xtensa-esp-elf\bin\xtensa-esp32-elf-gcc.exe -DESP_PLATFORM -DIDF_VER=\"v5.5-dirty\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -IC:/Users/Lenovo/esp32_electronic_piano/build/config -IC:/Users/Lenovo/esp32_electronic_piano/components/ttp229/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/newlib/platform_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/esp_additions/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/dma/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/ldo/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/debug_probe/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/power_supply/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/. -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/tlsf -ID:/Espressif/frameworks/esp-idf-v5.5/components/log/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/register -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/platform_port/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/include/private -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/deprecated_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/deprecated -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/twai/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_pm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_ringbuf/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gpio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_pcnt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gptimer/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_spi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_mcpwm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ana_cmpr/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2s/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdspi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_dac/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_rmt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_tsens/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_uart/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ledc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_parlio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_usb_serial_jtag/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_twai/include -mlongcalls -Wno-frame-address -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fno-shrink-wrap -fmacro-prefix-map=C:/Users/Lenovo/esp32_electronic_piano=. -fmacro-prefix-map=D:/Espressif/frameworks/esp-idf-v5.5=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -Wno-old-style-declaration -MD -MT esp-idf/ttp229/CMakeFiles/__idf_ttp229.dir/src/ttp229.c.obj -MF esp-idf\ttp229\CMakeFiles\__idf_ttp229.dir\src\ttp229.c.obj.d -o esp-idf/ttp229/CMakeFiles/__idf_ttp229.dir/src/ttp229.c.obj -c C:/Users/Lenovo/esp32_electronic_piano/components/ttp229/src/ttp229.c C:/Users/Lenovo/esp32_electronic_piano/components/ttp229/src/ttp229.c:6:14: error: conflicting types for 'tp_to_led_idx'; have 'const int8_t[16]' {aka 'const signed char[16]'} 6 | const int8_t tp_to_led_idx[16] = { | ^~~~~~~~~~~~~ In file included from C:/Users/Lenovo/esp32_electronic_piano/components/ttp229/src/ttp229.c:1: C:/Users/Lenovo/esp32_electronic_piano/components/ttp229/include/ttp229.h:8:15: note: previous declaration of 'tp_to_led_idx' with type 'int8_t[16]' {aka 'signed char[16]'} 8 | extern int8_t tp_to_led_idx[16]; | ^~~~~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/ttp229/src/ttp229.c:14:11: error: conflicting types for 'note_freqs'; have 'const int[16]' 14 | const int note_freqs[16] = { | ^~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/ttp229/include/ttp229.h:9:12: note: previous declaration of 'note_freqs' with type 'int[16]' 9 | extern int note_freqs[16]; | ^~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/ttp229/src/ttp229.c:19:15: error: conflicting types for 'key_map'; have 'const uint8_t[16]' {aka 'const unsigned char[16]'} 19 | const uint8_t key_map[16] = {3,2,1,0,15,14,13,12,8,9,10,11,4,5,6,7}; | ^~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/ttp229/include/ttp229.h:10:16: note: previous declaration of 'key_map' with type 'uint8_t[16]' {aka 'unsigned char[16]'} 10 | extern uint8_t key_map[16]; | ^~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/ttp229/src/ttp229.c: In function 'ttp229_init': C:/Users/Lenovo/esp32_electronic_piano/components/ttp229/src/ttp229.c:30:5: error: implicit declaration of function 'vTaskDelay' [-Wimplicit-function-declaration] 30 | vTaskDelay(pdMS_TO_TICKS(10)); | ^~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/ttp229/src/ttp229.c:30:16: error: implicit declaration of function 'pdMS_TO_TICKS' [-Wimplicit-function-declaration] 30 | vTaskDelay(pdMS_TO_TICKS(10)); | ^~~~~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/ttp229/src/ttp229.c: In function 'ttp229_read_keys': C:/Users/Lenovo/esp32_electronic_piano/components/ttp229/src/ttp229.c:36:5: error: implicit declaration of function 'esp_rom_delay_us' [-Wimplicit-function-declaration] 36 | esp_rom_delay_us(2); | ^~~~~~~~~~~~~~~~ [5/19] Building C object esp-idf/ws2812b/CMakeFiles/__idf_ws2812b.dir/src/ws2812b.c.obj FAILED: esp-idf/ws2812b/CMakeFiles/__idf_ws2812b.dir/src/ws2812b.c.obj ccache D:\Espressif\tools\xtensa-esp-elf\esp-14.2.0_20241119\xtensa-esp-elf\bin\xtensa-esp32-elf-gcc.exe -DESP_PLATFORM -DIDF_VER=\"v5.5-dirty\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -IC:/Users/Lenovo/esp32_electronic_piano/build/config -IC:/Users/Lenovo/esp32_electronic_piano/components/ws2812b/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/newlib/platform_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/esp_additions/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/dma/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/ldo/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/debug_probe/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/power_supply/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/. -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/tlsf -ID:/Espressif/frameworks/esp-idf-v5.5/components/log/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/register -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/platform_port/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/include/private -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/deprecated_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/deprecated -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/twai/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_pm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_ringbuf/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gpio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_pcnt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gptimer/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_spi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_mcpwm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ana_cmpr/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2s/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdspi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_dac/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_rmt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_tsens/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_uart/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ledc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_parlio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_usb_serial_jtag/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_twai/include -IC:/Users/Lenovo/esp32_electronic_piano/managed_components/espressif__led_strip/include -IC:/Users/Lenovo/esp32_electronic_piano/managed_components/espressif__led_strip/interface -mlongcalls -Wno-frame-address -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fno-shrink-wrap -fmacro-prefix-map=C:/Users/Lenovo/esp32_electronic_piano=. -fmacro-prefix-map=D:/Espressif/frameworks/esp-idf-v5.5=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -Wno-old-style-declaration -MD -MT esp-idf/ws2812b/CMakeFiles/__idf_ws2812b.dir/src/ws2812b.c.obj -MF esp-idf\ws2812b\CMakeFiles\__idf_ws2812b.dir\src\ws2812b.c.obj.d -o esp-idf/ws2812b/CMakeFiles/__idf_ws2812b.dir/src/ws2812b.c.obj -c C:/Users/Lenovo/esp32_electronic_piano/components/ws2812b/src/ws2812b.c In file included from C:/Users/Lenovo/esp32_electronic_piano/components/ws2812b/src/ws2812b.c:1: C:/Users/Lenovo/esp32_electronic_piano/components/ws2812b/include/ws2812b.h:19:1: warning: data definition has no type or storage class 19 | set_led_rgb(int idx, uint8_t r, uint8_t g, uint8_t b, uint8_t brightness); | ^~~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/ws2812b/include/ws2812b.h:19:1: error: type defaults to 'int' in declaration of 'set_led_rgb' [-Wimplicit-int] C:/Users/Lenovo/esp32_electronic_piano/components/ws2812b/src/ws2812b.c:53:2: error: return type defaults to 'int' [-Wimplicit-int] 53 | set_led_rgb(int idx, uint8_t r, uint8_t g, uint8_t b, uint8_t brightness) { | ^~~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/ws2812b/src/ws2812b.c: In function 'led_fade_task': C:/Users/Lenovo/esp32_electronic_piano/components/ws2812b/src/ws2812b.c:89:35: error: implicit declaration of function 'sinf' [-Wimplicit-function-declaration] 89 | float v = (1.0f + sinf((pos*2.0f*M_PI)/NUM_LEDS)) * 0.5f; | ^~~~ C:/Users/Lenovo/esp32_electronic_piano/components/ws2812b/src/ws2812b.c:2:1: note: include '<math.h>' or provide a declaration of 'sinf' 1 | #include "ws2812b.h" +++ |+#include <math.h> 2 | #include "led_strip.h" C:/Users/Lenovo/esp32_electronic_piano/components/ws2812b/src/ws2812b.c:89:35: warning: incompatible implicit declaration of built-in function 'sinf' [-Wbuiltin-declaration-mismatch] 89 | float v = (1.0f + sinf((pos*2.0f*M_PI)/NUM_LEDS)) * 0.5f; | ^~~~ C:/Users/Lenovo/esp32_electronic_piano/components/ws2812b/src/ws2812b.c:89:35: note: include '<math.h>' or provide a declaration of 'sinf' C:/Users/Lenovo/esp32_electronic_piano/components/ws2812b/src/ws2812b.c: In function 'set_led_rgb': C:/Users/Lenovo/esp32_electronic_piano/components/ws2812b/src/ws2812b.c:58:1: error: control reaches end of non-void function [-Werror=return-type] 58 | } | ^ cc1.exe: some warnings being treated as errors [6/19] Building C object esp-idf/oled/CMakeFiles/__idf_oled.dir/src/oled.c.obj FAILED: esp-idf/oled/CMakeFiles/__idf_oled.dir/src/oled.c.obj ccache D:\Espressif\tools\xtensa-esp-elf\esp-14.2.0_20241119\xtensa-esp-elf\bin\xtensa-esp32-elf-gcc.exe -DESP_PLATFORM -DIDF_VER=\"v5.5-dirty\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -IC:/Users/Lenovo/esp32_electronic_piano/build/config -IC:/Users/Lenovo/esp32_electronic_piano/components/oled/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/newlib/platform_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/esp_additions/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/dma/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/ldo/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/debug_probe/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/power_supply/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/. -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/tlsf -ID:/Espressif/frameworks/esp-idf-v5.5/components/log/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/register -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/platform_port/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/include/private -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/deprecated_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/deprecated -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/twai/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_pm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_ringbuf/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gpio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_pcnt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gptimer/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_spi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_mcpwm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ana_cmpr/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2s/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdspi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_dac/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_rmt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_tsens/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_uart/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ledc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_parlio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_usb_serial_jtag/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_twai/include -IC:/Users/Lenovo/esp32_electronic_piano/managed_components/espressif__led_strip/include -IC:/Users/Lenovo/esp32_electronic_piano/managed_components/espressif__led_strip/interface -mlongcalls -Wno-frame-address -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fno-shrink-wrap -fmacro-prefix-map=C:/Users/Lenovo/esp32_electronic_piano=. -fmacro-prefix-map=D:/Espressif/frameworks/esp-idf-v5.5=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -Wno-old-style-declaration -MD -MT esp-idf/oled/CMakeFiles/__idf_oled.dir/src/oled.c.obj -MF esp-idf\oled\CMakeFiles\__idf_oled.dir\src\oled.c.obj.d -o esp-idf/oled/CMakeFiles/__idf_oled.dir/src/oled.c.obj -c C:/Users/Lenovo/esp32_electronic_piano/components/oled/src/oled.c C:/Users/Lenovo/esp32_electronic_piano/components/oled/src/oled.c:6:10: fatal error: spi_master.h: No such file or directory 6 | #include "spi_master.h" | ^~~~~~~~~~~~~~ compilation terminated. [7/19] Building C object esp-idf/buzzer/CMakeFiles/__idf_buzzer.dir/src/buzzer.c.obj FAILED: esp-idf/buzzer/CMakeFiles/__idf_buzzer.dir/src/buzzer.c.obj ccache D:\Espressif\tools\xtensa-esp-elf\esp-14.2.0_20241119\xtensa-esp-elf\bin\xtensa-esp32-elf-gcc.exe -DESP_PLATFORM -DIDF_VER=\"v5.5-dirty\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -IC:/Users/Lenovo/esp32_electronic_piano/build/config -IC:/Users/Lenovo/esp32_electronic_piano/components/buzzer/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/newlib/platform_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/esp_additions/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/dma/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/ldo/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/debug_probe/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/power_supply/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/. -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/tlsf -ID:/Espressif/frameworks/esp-idf-v5.5/components/log/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/register -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/platform_port/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/include/private -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/deprecated_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/deprecated -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/twai/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_pm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_ringbuf/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gpio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_pcnt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gptimer/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_spi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_mcpwm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ana_cmpr/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2s/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdspi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_dac/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_rmt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_tsens/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_uart/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ledc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_parlio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_usb_serial_jtag/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_twai/include -IC:/Users/Lenovo/esp32_electronic_piano/managed_components/espressif__led_strip/include -IC:/Users/Lenovo/esp32_electronic_piano/managed_components/espressif__led_strip/interface -mlongcalls -Wno-frame-address -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fno-shrink-wrap -fmacro-prefix-map=C:/Users/Lenovo/esp32_electronic_piano=. -fmacro-prefix-map=D:/Espressif/frameworks/esp-idf-v5.5=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -Wno-old-style-declaration -MD -MT esp-idf/buzzer/CMakeFiles/__idf_buzzer.dir/src/buzzer.c.obj -MF esp-idf\buzzer\CMakeFiles\__idf_buzzer.dir\src\buzzer.c.obj.d -o esp-idf/buzzer/CMakeFiles/__idf_buzzer.dir/src/buzzer.c.obj -c C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/src/buzzer.c C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/src/buzzer.c:10:61: error: conflicting types for 'tone_t'; have 'struct <anonymous>' 10 | typedef struct { float freq; float dur; const char *note; } tone_t; | ^~~~~~ In file included from C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/src/buzzer.c:1: C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/include/buzzer.h:17:61: note: previous declaration of 'tone_t' with type 'tone_t' 17 | typedef struct { float freq; float dur; const char *note; } tone_t; | ^~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/src/buzzer.c:11:14: error: conflicting types for 'blessing'; have 'const tone_t[]' 11 | const tone_t blessing[] = { | ^~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/include/buzzer.h:18:21: note: previous declaration of 'blessing' with type 'const tone_t[]' 18 | extern const tone_t blessing[]; | ^~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/src/buzzer.c:2232:14: error: conflicting types for 'monitoring'; have 'const tone_t[]' 2232 | const tone_t monitoring[] = { | ^~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/include/buzzer.h:19:21: note: previous declaration of 'monitoring' with type 'const tone_t[]' 19 | extern const tone_t monitoring[]; | ^~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/src/buzzer.c:3927:14: error: conflicting types for 'bad_apple'; have 'const tone_t[]' 3927 | const tone_t bad_apple[] = { | ^~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/include/buzzer.h:20:21: note: previous declaration of 'bad_apple' with type 'const tone_t[]' 20 | extern const tone_t bad_apple[]; | ^~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/src/buzzer.c:5596:15: error: conflicting types for 'music_tracks'; have 'const tone_t *[3]' 5596 | const tone_t* music_tracks[3] = {blessing, monitoring, bad_apple}; | ^~~~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/include/buzzer.h:22:22: note: previous declaration of 'music_tracks' with type 'const tone_t *[3]' 22 | extern const tone_t* music_tracks[3]; | ^~~~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/src/buzzer.c: In function 'blessing_task': C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/src/buzzer.c:5628:5: error: implicit declaration of function 'ESP_LOGI'; did you mean 'ESP_OK'? [-Wimplicit-function-declaration] 5628 | ESP_LOGI(TAG, "Blessing task started"); | ^~~~~~~~ | ESP_OK C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/src/buzzer.c:5628:14: error: 'TAG' undeclared (first use in this function) 5628 | ESP_LOGI(TAG, "Blessing task started"); | ^~~ C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/src/buzzer.c:5628:14: note: each undeclared identifier is reported only once for each function it appears in C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/src/buzzer.c:5642:13: error: implicit declaration of function 'led_update_from_state' [-Wimplicit-function-declaration] 5642 | led_update_from_state(); | ^~~~~~~~~~~~~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/src/buzzer.c: In function 'start_blessing_task': C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/src/buzzer.c:5664:9: error: implicit declaration of function 'ESP_LOGW'; did you mean 'ESP_OK'? [-Wimplicit-function-declaration] 5664 | ESP_LOGW(TAG,"Create blessing task failed"); | ^~~~~~~~ | ESP_OK C:/Users/Lenovo/esp32_electronic_piano/components/buzzer/src/buzzer.c:5664:18: error: 'TAG' undeclared (first use in this function) 5664 | ESP_LOGW(TAG,"Create blessing task failed"); | ^~~ [9/19] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/esp32_electronic_piano_main.c.obj FAILED: esp-idf/main/CMakeFiles/__idf_main.dir/esp32_electronic_piano_main.c.obj ccache D:\Espressif\tools\xtensa-esp-elf\esp-14.2.0_20241119\xtensa-esp-elf\bin\xtensa-esp32-elf-gcc.exe -DESP_PLATFORM -DIDF_VER=\"v5.5-dirty\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -IC:/Users/Lenovo/esp32_electronic_piano/build/config -IC:/Users/Lenovo/esp32_electronic_piano/main -ID:/Espressif/frameworks/esp-idf-v5.5/components/newlib/platform_include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/config/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -ID:/Espressif/frameworks/esp-idf-v5.5/components/freertos/esp_additions/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/dma/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/ldo/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/debug_probe/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/power_supply/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/. -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/port/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/heap/tlsf -ID:/Espressif/frameworks/esp-idf-v5.5/components/log/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/soc/esp32/register -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/platform_port/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/hal/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32/include/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_rom/esp32 -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/soc -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_system/port/include/private -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/xtensa/deprecated_include -IC:/Users/Lenovo/esp32_electronic_piano/components/buzzer/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/deprecated -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/twai/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/driver/touch_sensor/esp32/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_pm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_ringbuf/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gpio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_pcnt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_gptimer/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_spi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_mcpwm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ana_cmpr/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2s/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/sdmmc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdspi/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_dac/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_rmt/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_tsens/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_sdm/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_i2c/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_uart/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_ledc/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_parlio/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_usb_serial_jtag/include -ID:/Espressif/frameworks/esp-idf-v5.5/components/esp_driver_twai/include -IC:/Users/Lenovo/esp32_electronic_piano/managed_components/espressif__led_strip/include -IC:/Users/Lenovo/esp32_electronic_piano/managed_components/espressif__led_strip/interface -IC:/Users/Lenovo/esp32_electronic_piano/components/ttp229/include -IC:/Users/Lenovo/esp32_electronic_piano/components/ws2812b/include -IC:/Users/Lenovo/esp32_electronic_piano/components/oled/include -mlongcalls -Wno-frame-address -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fno-shrink-wrap -fmacro-prefix-map=C:/Users/Lenovo/esp32_electronic_piano=. -fmacro-prefix-map=D:/Espressif/frameworks/esp-idf-v5.5=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -Wno-old-style-declaration -MD -MT esp-idf/main/CMakeFiles/__idf_main.dir/esp32_electronic_piano_main.c.obj -MF esp-idf\main\CMakeFiles\__idf_main.dir\esp32_electronic_piano_main.c.obj.d -o esp-idf/main/CMakeFiles/__idf_main.dir/esp32_electronic_piano_main.c.obj -c C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c In file included from C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:20: C:/Users/Lenovo/esp32_electronic_piano/components/ws2812b/include/ws2812b.h:19:1: warning: data definition has no type or storage class 19 | set_led_rgb(int idx, uint8_t r, uint8_t g, uint8_t b, uint8_t brightness); | ^~~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/components/ws2812b/include/ws2812b.h:19:1: error: type defaults to 'int' in declaration of 'set_led_rgb' [-Wimplicit-int] In file included from D:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/esp_intr_alloc.h:12, from D:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/esp_cpu.h:21, from D:/Espressif/frameworks/esp-idf-v5.5/components/esp_hw_support/include/spinlock.h:11, from D:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos/portmacro.h:49, from D:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/include/freertos/portable.h:57, from D:/Espressif/frameworks/esp-idf-v5.5/components/freertos/FreeRTOS-Kernel/include/freertos/FreeRTOS.h:69, from C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:6: C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c: In function 'app_main': C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:78:65: error: 'spi_oled' undeclared (first use in this function) 78 | ESP_ERROR_CHECK(spi_bus_add_device(OLED_SPI_HOST, &devcfg, &spi_oled)); | ^~~~~~~~ D:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include/esp_err.h:116:30: note: in definition of macro 'ESP_ERROR_CHECK' 116 | esp_err_t err_rc_ = (x); \ | ^ C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:78:65: note: each undeclared identifier is reported only once for each function it appears in 78 | ESP_ERROR_CHECK(spi_bus_add_device(OLED_SPI_HOST, &devcfg, &spi_oled)); | ^~~~~~~~ D:/Espressif/frameworks/esp-idf-v5.5/components/esp_common/include/esp_err.h:116:30: note: in definition of macro 'ESP_ERROR_CHECK' 116 | esp_err_t err_rc_ = (x); \ | ^ C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:88:5: error: implicit declaration of function 'oled_send_cmd'; did you mean 'oled_send_data'? [-Wimplicit-function-declaration] 88 | oled_send_cmd(init_cmds, sizeof(init_cmds)); | ^~~~~~~~~~~~~ | oled_send_data C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:104:17: error: 'current_menu' undeclared (first use in this function) 104 | if (current_menu == MENU_NONE) { | ^~~~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:104:33: error: 'MENU_NONE' undeclared (first use in this function) 104 | if (current_menu == MENU_NONE) { | ^~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:105:21: error: 'g_mode' undeclared (first use in this function) 105 | if (g_mode == MODE_LED_KEY_INTERACT) { | ^~~~~~ C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:105:31: error: 'MODE_LED_KEY_INTERACT' undeclared (first use in this function) 105 | if (g_mode == MODE_LED_KEY_INTERACT) { | ^~~~~~~~~~~~~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:106:30: error: 'MODE_NORMAL' undeclared (first use in this function); did you mean 'FP_NORMAL'? 106 | g_mode = MODE_NORMAL; | ^~~~~~~~~~~ | FP_NORMAL C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:120:31: error: 'MODE_LED_GRADIENT_CYCLE' undeclared (first use in this function) 120 | if (g_mode == MODE_LED_GRADIENT_CYCLE) { | ^~~~~~~~~~~~~~~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:122:21: error: 'gradient_run' undeclared (first use in this function) 122 | gradient_run = false; | ^~~~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:137:32: error: 'MENU_MUSIC_SELECT' undeclared (first use in this function) 137 | current_menu = MENU_MUSIC_SELECT; | ^~~~~~~~~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:152:32: error: 'MENU_FUNC_SELECT' undeclared (first use in this function) 152 | current_menu = MENU_FUNC_SELECT; | ^~~~~~~~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:176:30: error: 'MODE_BLESSING_PLAY' undeclared (first use in this function) 176 | g_mode = MODE_BLESSING_PLAY; | ^~~~~~~~~~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:198:30: error: 'MODE_GAME' undeclared (first use in this function) 198 | g_mode = MODE_GAME; | ^~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:199:21: error: 'game_running' undeclared (first use in this function); did you mean 'eRunning'? 199 | game_running = true; | ^~~~~~~~~~~~ | eRunning C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:200:28: error: 'game_regions' undeclared (first use in this function) 200 | memset(game_regions, 0, sizeof(game_regions)); | ^~~~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:201:21: error: 'game_next_spawn' undeclared (first use in this function) 201 | game_next_spawn = xTaskGetTickCount() + pdMS_TO_TICKS(800); | ^~~~~~~~~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:275:36: error: 'oled_buf' undeclared (first use in this function) 275 | memset(oled_buf,0,OLED_BUF_SIZE); | ^~~~~~~~ C:/Users/Lenovo/esp32_electronic_piano/main/esp32_electronic_piano_main.c:285:62: warning: variable 'idx' set but not used [-Wunused-but-set-variable] 285 | int page = yy/8; int idx = page*OLED_WIDTH + xx; | ^~~ ninja: build stopped: subcommand failed. * 终端进程“D:\Espressif\tools\ninja\1.12.1\ninja.EXE”已终止,退出代码: 1。
10-26
FAILED: obj/foundation/multimedia/media_foundation/src/meta/media_foundation/format.o /usr/bin/ccache ../../prebuilts/clang/ohos/linux-x86_64/llvm/bin/clang++ -MMD -MF obj/foundation/multimedia/media_foundation/src/meta/media_foundation/format.o.d -DHST_ANY_WITH_NO_RTTI -DMEDIA_OHOS -DDYNAMIC_PLUGINS -DHST_PLUGIN_PATH=\"/system/lib64/media/media_plugins\" -DHST_PLUGIN_FILE_TAIL=\".z.so\" -DV8_DEPRECATION_WARNINGS -D_GNU_SOURCE -DHAVE_SYS_UIO_H -D__MUSL__ -D_LIBCPP_HAS_MUSL_LIBC -D__BUILD_LINUX_WITH_CLANG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DCOMPONENT_BUILD -D__GNU_SOURCE=1 -DCHROMIUM_CXX_TWEAK_INLINES -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DSOFTBUS_LINUX -DDRIVERS_INTERFACE_DISPLAY_ENABLE -DUSE_GRAPHIC_TEXT_GINE -DACE_ENABLE_GL -DRS_ENABLE_GL -DENABLE_RECORDING_DCL -DRS_DISABLE_EGLIMAGE -DRS_ENABLE_PARALLEL_RENDER -Iobj/third_party/musl/usr/include/aarch64-linux-ohos -Ioverride/third_party -I../.. -Igen -I../../foundation/multimedia/media_foundation/osal/base -I../../foundation/multimedia/media_foundation/plugin -I../../foundation/multimedia/media_foundation/src/buffer/avbuffer/include -I../../foundation/multimedia/media_foundation/src/buffer/avbuffer_queue/include -I../../foundation/multimedia/media_foundation/src/capi/common -I../../base/hiviewdfx/hilog/interfaces/native/innerkits/include -I../../foundation/graphic/graphic_surface/surface/include -I../../foundation/graphic/graphic_2d/utils/sync_fence/export -I../../foundation/graphic/graphic_2d/interface/inner_api/common -I../../third_party/bounds_checking_function/include -I../../third_party/ffmpeg -I../../foundation/multimedia/media_foundation/interface/kits/c -I../../foundation/multimedia/media_foundation/interface/inner_api -I../../foundation/multimedia/media_foundation/interface/inner_api/buffer -I../../foundation/multimedia/media_foundation/interface/inner_api/common -I../../foundation/multimedia/media_foundation/interface/inner_api/meta -I../../foundation/graphic/graphic_surface/interface/inner_api/surface -I../../commonlibrary/c_utils/base/include -I../../base/hiviewdfx/hisysevent/interfaces/native/innerkits/hisysevent/include -I../../foundation/systemabilitymgr/samgr/interfaces/innerkits/samgr_proxy/include -I../../foundation/systemabilitymgr/samgr/interfaces/innerkits/dynamic_cache/include -I../../base/notification/eventhandler/interfaces/inner_api -I../../base/notification/eventhandler/frameworks/eventhandler/include -I../../foundation/communication/ipc/interfaces/innerkits/ipc_core/include -I../../foundation/communication/dsoftbus/interfaces/kits -I../../foundation/communication/dsoftbus/interfaces/kits/bus_center -I../../foundation/communication/dsoftbus/interfaces/kits/common -I../../foundation/communication/dsoftbus/interfaces/kits/discovery -I../../foundation/communication/dsoftbus/interfaces/kits/transport -I../../foundation/communication/dsoftbus/sdk/transmission/session/cpp/include -I../../foundation/communication/dsoftbus/interfaces/inner_kits/transport -I../../foundation/communication/dsoftbus/core/common/dfx/hisysevent_adapter/include -I../../foundation/communication/dsoftbus/core/common/dfx/interface/include -I../../foundation/communication/dsoftbus/components/nstackx/nstackx_core/dfile/interface -I../../foundation/communication/dsoftbus/components/nstackx/nstackx_util/interface -I../../foundation/graphic/graphic_surface/interfaces/inner_api/surface -I../../foundation/graphic/graphic_surface/interfaces/inner_api/common -I../../foundation/graphic/graphic_surface/interfaces/inner_api/utils -I../../foundation/graphic/graphic_surface/sandbox -I../../foundation/graphic/graphic_surface/scoped_bytrace/include -I../../foundation/graphic/graphic_surface/sync_fence/include -I../../base/hiviewdfx/hilog/interfaces/native/innerkits -I../../foundation/graphic/graphic_2d/utils/log -I../../base/hiviewdfx/hitrace/interfaces/native/innerkits/include/hitrace_meter -I../../foundation/communication/ipc/ipc/native/src/core/include -I../../foundation/communication/ipc/ipc/native/src/mock/include -fno-strict-aliasing -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -funwind-tables -fcolor-diagnostics -fmerge-all-constants -Xclang -mllvm -Xclang -instcombine-lower-dbg-declare=0 -no-canonical-prefixes -flto=thin -fsplit-lto-unit -ffunction-sections -fno-short-enums --target=aarch64-linux-ohos -march=armv8-a -mfloat-abi=hard -mfpu=neon-fp-armv8 --param=ssp-buffer-size=4 -fstack-protector-strong -fPIC -Wall -Werror -Wextra -Wimplicit-fallthrough -Wthread-safety -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-unneeded-internal-declaration -Wno-error=c99-designator -Wno-error=anon-enum-enum-conversion -Wno-error=sizeof-array-div -Wno-error=implicit-fallthrough -Wno-error=reorder-init-list -Wno-error=range-loop-construct -Wno-error=deprecated-copy -Wno-error=implicit-int-float-conversion -Wno-error=inconsistent-dllimport -Wno-error=unknown-warning-option -Wno-error=sign-compare -Wno-error=int-in-bool-context -Wno-error=return-stack-address -Wno-error=dangling-gsl -Wno-unused-but-set-variable -Wno-deprecated-declarations -Wno-unused-but-set-parameter -Wno-null-pointer-subtraction -Wno-unqualified-std-cast-call -Wno-user-defined-warnings -Wno-unused-lambda-capture -Wno-null-pointer-arithmetic -Wno-enum-compare-switch -O2 -fno-ident -fdata-sections -ffunction-sections -fno-omit-frame-pointer -g2 -ggnu-pubnames -fno-common -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare --param=ssp-buffer-size=4 -fstack-protector-ret-strong -O2 -fPIC -Wall -fexceptions -fno-rtti -Wno-unused-but-set-variable -Wno-format -fsanitize-trap=all -ftrap-function=abort -fsanitize-cfi-cross-dso -flto -fsanitize=cfi -fsanitize-blacklist=../../build/config/sanitizers/cfi_blocklist.txt -fvisibility=default -fsanitize=unsigned-integer-overflow -fsanitize=signed-integer-overflow -fsanitize-blacklist=../../build/config/sanitizers/integer_overflow_blocklist.txt -fno-sanitize-trap=integer,undefined -fno-sanitize-recover=integer,undefined -fsanitize-minimal-runtime -ftrivial-auto-var-init=zero -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang -Wno-error=deprecated-declarations -DCONFIG_STANDARD_SYSTEM -DBUILD_PUBLIC_VERSION -DCONFIG_ACTV_BINDER -std=c++17 -fno-exceptions -fno-rtti --sysroot=obj/third_party/musl -fvisibility-inlines-hidden -O2 -fPIC -Wall -fexceptions -fno-rtti -Wno-unused-but-set-variable -Wno-format -c ../../foundation/multimedia/media_foundation/src/meta/format.cpp -o obj/foundation/multimedia/media_foundation/src/meta/media_foundation/format.o ../../foundation/multimedia/media_foundation/src/meta/format.cpp:142:76: error: no member named 'c_str' in 'std::string_view' MEDIA_LOG_E("liubing PutIntValue key:%{public}s value:%{public}d", key.c_str(), value);这个错误是啥意思
08-27
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值