I am programming esp32 microcontrollers using esp-idf. I have noticed this strange compiler behaviour when building my code. When I declare some variables and not use them, sometimes I get an error instead of warning. For example when I declare a variable:
static const uint16_t WRITE_CHARACTERISTIC = 0x0011;
But I do not use it anywhere in my code, I get an error:
../components/BLE/BLE_custom.c:131:23: error: 'WRITE_CHARACTERISTIC' defined but not used [-Werror=unused-const-variable=]
static const uint16_t WRITE_CHARACTERISTIC = 0x0011;
^~~~~~~~~~~~~~~~~~~~
cc1.exe: some warnings being treated as errors
ninja: build stopped: subcommand failed.
The terminal process "C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe -Command cmake --build ." terminated with exit code: 1.
Terminal will be reused by tasks, press any key to close it.
If I comment this line out, the code works fine. Could someone help me understand why this happens and how to fix this.
Full log:
Executing task: cmake --build . <
[1/9] Performing build step for 'bootloader'
ninja: no work to do.
[3/7] Building C object esp-idf/BLE/CMakeFiles/__idf_BLE.dir/BLE_custom.c.obj
FAILED: esp-idf/BLE/CMakeFiles/__idf_BLE.dir/BLE_custom.c.obj
C:\Users\my_user\.espressif\tools\xtensa-esp32-elf\esp-2020r3-8.4.0\xtensa-esp32-elf\bin\xtensa-esp32-elf-gcc.exe -DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\" -Iconfig -I../components/BLE -IC:/Users/petrikas.lu/esp/esp-idf/components/newlib/platform_include -IC:/Users/petrikas.lu/esp/esp-idf/components/freertos/include -IC:/Users/petrikas.lu/esp/esp-idf/components/freertos/port/xtensa/include -IC:/Users/petrikas.lu/esp/esp-idf/components/esp_hw_support/include -IC:/Users/petrikas.lu/esp/esp-idf/components/esp_hw_support/port/esp32/. -IC:/Users/petrikas.lu/esp/esp-idf/components/heap/include -IC:/Users/petrikas.lu/esp/esp-idf/components/log/include -IC:/Users/petrikas.lu/esp/esp-idf/components/lwip/include/apps -IC:/Users/petrikas.lu/esp/esp-idf/components/lwip/include/apps/sntp -IC:/Users/petrikas.lu/esp/esp-idf/components/lwip/lwip/src/include -IC:/Users/petrikas.lu/esp/esp-idf/components/lwip/port/esp32/include -IC:/Users/petrikas.lu/esp/esp-idf/components/lwip/port/esp32/include/arch -IC:/Users/petrikas.lu/esp/esp-idf/components/soc/include -IC:/Users/petrikas.lu/esp/esp-idf/components/soc/esp32/. -IC:/Users/petrikas.lu/esp/esp-idf/components/soc/esp32/include
-IC:/Users/petrikas.lu/esp/esp-idf/components/hal/esp32/include -IC:/Users/petrikas.lu/esp/esp-idf/components/hal/include -IC:/Users/petrikas.lu/esp/esp-idf/components/esp_rom/include -IC:/Users/petrikas.lu/esp/esp-idf/components/esp_rom/esp32 -IC:/Users/petrikas.lu/esp/esp-idf/components/esp_common/include -IC:/Users/petrikas.lu/esp/esp-idf/components/esp_system/include -IC:/Users/petrikas.lu/esp/esp-idf/components/esp32/include -IC:/Users/petrikas.lu/esp/esp-idf/components/driver/include -IC:/Users/petrikas.lu/esp/esp-idf/components/driver/esp32/include -IC:/Users/petrikas.lu/esp/esp-idf/components/esp_ringbuf/include -IC:/Users/petrikas.lu/esp/esp-idf/components/efuse/include -IC:/Users/petrikas.lu/esp/esp-idf/components/efuse/esp32/include -IC:/Users/petrikas.lu/esp/esp-idf/components/xtensa/include -IC:/Users/petrikas.lu/esp/esp-idf/components/xtensa/esp32/include -IC:/Users/petrikas.lu/esp/esp-idf/components/espcoredump/include -IC:/Users/petrikas.lu/esp/esp-idf/components/esp_timer/include -IC:/Users/petrikas.lu/esp/esp-idf/components/esp_ipc/include -IC:/Users/petrikas.lu/esp/esp-idf/components/esp_pm/include -IC:/Users/petrikas.lu/esp/esp-idf/components/vfs/include -IC:/Users/petrikas.lu/esp/esp-idf/components/esp_wifi/include -IC:/Users/petrikas.lu/esp/esp-idf/components/esp_wifi/esp32/include -IC:/Users/petrikas.lu/esp/esp-idf/components/esp_event/include -IC:/Users/petrikas.lu/esp/esp-idf/components/esp_netif/include -IC:/Users/petrikas.lu/esp/esp-idf/components/esp_eth/include -IC:/Users/petrikas.lu/esp/esp-idf/components/tcpip_adapter/include -IC:/Users/petrikas.lu/esp/esp-idf/components/app_trace/include -IC:/Users/petrikas.lu/esp/esp-idf/components/bt/common/osi/include -IC:/Users/petrikas.lu/esp/esp-idf/components/bt/include/esp32/include -IC:/Users/petrikas.lu/esp/esp-idf/components/bt/host/bluedroid/api/include/api -IC:/Users/petrikas.lu/esp/esp-idf/components/nvs_flash/include -IC:/Users/petrikas.lu/esp/esp-idf/components/spi_flash/include -IC:/Users/petrikas.lu/esp/esp-idf/components/mbedtls/port/include -IC:/Users/petrikas.lu/esp/esp-idf/components/mbedtls/mbedtls/include -IC:/Users/petrikas.lu/esp/esp-idf/components/mbedtls/esp_crt_bundle/include -mlongcalls -Wno-frame-address -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wextra -Wno-unused-parameter -Wno-sign-compare -ggdb -Og -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -std=gnu99 -Wno-old-style-declaration -D_GNU_SOURCE -DIDF_VER=\"v4.3-dirty\" -DESP_PLATFORM -MD -MT esp-idf/BLE/CMakeFiles/__idf_BLE.dir/BLE_custom.c.obj -MF esp-idf\BLE\CMakeFiles\__idf_BLE.dir\BLE_custom.c.obj.d -o esp-idf/BLE/CMakeFiles/__idf_BLE.dir/BLE_custom.c.obj -c ../components/BLE/BLE_custom.c
../components/BLE/BLE_custom.c:131:23: error: 'WRITE_CHARACTERISTIC' defined but not used [-Werror=unused-const-variable=]
static const uint16_t WRITE_CHARACTERISTIC = 0x0011;
^~~~~~~~~~~~~~~~~~~~
cc1.exe: some warnings being treated as errors
ninja: build stopped: subcommand failed.
The terminal process "C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe -Command cmake --build ." terminated with exit code: 1.