2026-03-17 5:24 PM
I have five projects on the go, which compile and debug well on STM32CubeIDE 1.X.X (at least for 1.12.0+), but with warnings. I am now trying to shift to more recent versions of CubeIDE (2.X.X), but they behave as if ">Properties>C/C++Build>Settings>Tool Settings>MCU>MPU GCC Compiler>Warnings>Treat warnings as errors (-Werror)" is enabled, even when it is not.
I believe that my settings in the more recent CubeIDE are identical to the older one, and I have tested this on two different computers with similar results. The error which is currently causing the compilation to halt is " ...error: implicit declaration of function 'xxxxx' [Wimplicit-function-declaration]", but if I resolve it, another item which should be a (legitimate) 'warning' will appear as an 'error'. I am using "ISO C11 (-std=c11)", and have the same issue if I attempt to use GNU11.
Unfortunately, I cannot resolve all the warnings without creating other problems, so this issue is preventing me from being able to upgrade my active CubeIDE install. I suspect there is a Workspace setting somewhere that I can't find, but it's nowhere obvious, and -Werrror is not mentioned in the project makefile. Any assistance would be appreciated.
2026-03-17 7:49 PM
I don't see that behavior. Projects with warnings compile fine.
Copy the output of the "Console" tab after trying to build and paste it here, preferably in a code sample </> format.
I don't see how project build errors would prevent you from upgrading STM32CubeIDE.
2026-03-18 2:15 PM - edited 2026-03-18 4:35 PM
Here is a snippet (I cut out a few hundred lines from the middle) of the console output with the missing 'stdio.h' include triggering the error:
13:29:49 **** Clean-only build of configuration DBGcfg for project tester_application ****
make -j6 clean
rm -rf ./Utilities/JPEG/jpeg_utils.cyclo ./Utilities/JPEG/jpeg_utils.d ./Utilities/JPEG/jpeg_utils.o ./Utilities/JPEG/jpeg_utils.su
rm -rf ./Submodules/zlib/adler32.cyclo ./Submodules/zlib/adler32.d ./Submodules/zlib/adler32.o ./Submodules/zlib/adler32.su ./Submodules/zlib/zutil.cyclo ./Submodules/zlib/zutil.d ./Submodules/zlib/zutil.o ./Submodules/zlib/zutil.su
rm -rf ./Submodules/stm32h7xx-hal-driver/Src/Legacy/stm32h7xx_hal_eth.cyclo ./Submodules/stm32h7xx-hal-driver/Src/Legacy/stm32h7xx_hal_eth.d ./Submodules/stm32h7xx-hal-driver/Src/Legacy/stm32h7xx_hal_eth.o ./Submodules/stm32h7xx-hal-driver/Src/Legacy/stm32h7xx_hal_eth.su ./Submodules/stm32h7xx-hal-driver/Src/Legacy/stm32h7xx_hal_eth_ex.cyclo ./Submodules/stm32h7xx-hal-driver/Src/Legacy/stm32h7xx_hal_eth_ex.d ./Submodules/stm32h7xx-hal-driver/Src/Legacy/stm32h7xx_hal_eth_ex.o ./Submodules/stm32h7xx-hal-driver/Src/Legacy/stm32h7xx_hal_eth_ex.su
[...]
arm-none-eabi-gcc "../Submodules/USBX/common/core/src/ux_utility_unicode_to_string.c" -mcpu=cortex-m7 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32H743xx -DTX_INCLUDE_USER_DEFINE_FILE -DGX_INCLUDE_USER_DEFINE_FILE -DFX_INCLUDE_USER_DEFINE_FILE -DLX_INCLUDE_USER_DEFINE_FILE -DUX_INCLUDE_USER_DEFINE_FILE -DIHFC_INCLUDE_USER_DEFINE_FILE -DSTM32_THREAD_SAFE_STRATEGY=3 -DLANGUAGE_DEFAULT=LANGUAGE_ENGLISH '-DPRODUCT_NAME_STRING="DBGcfg"' '-DFIRMWARE_RELEASE_ID=""' '-DRELEASE_BRANCH_FLAG=(sizeof(FIRMWARE_RELEASE_ID) != sizeof(""))' '-DFIRMWARE_NAME_STRING="DBGcfg 200"' -DUSE_PWR_LDO_SUPPLY -c -I../Application -I../Application/BSP -I../Application/DAQ -I../Application/GUIX_project/Outputs -I../Application/GUIX_user -I../DeviceX_extended/DeviceX/chaos-pp/chaos -I../DeviceX_extended/DeviceX/drivers -I../DeviceX_extended/DeviceX -I../DeviceX_extended/DeviceX_DAQ -I../Submodules/CleftStick -I../Submodules/CMSIS-DSP/Include -I../Submodules/CMSIS-DSP/Include/dsp -I../Submodules/CMSIS-DSP/PrivateInclude -I../Submodules/EEPROM_Emulation -I../Submodules/FileX/common/inc -I../Submodules/FileX/ports/cortex_m7/gnu/inc -I../Submodules/FileX_extended -I../Submodules/GTC_Utilities -I../Submodules/GUIX/common/inc -I../Submodules/GUIX/ports/cortex_m7/gnu/inc -I../Submodules/GUIX_extended -I../Submodules/H7_device_drivers -I../Submodules/LevelX/common/inc -I../Submodules/stm32h7xx-hal-driver/Inc -I../Submodules/stm32h7xx-hal-driver/Inc/Legacy -I../Submodules/ThreadX/common/inc -I../Submodules/ThreadX/ports/cortex_m7/gnu/inc -I../Submodules/ThreadX_extended -I../Submodules/TinyPrintf -I../Submodules/USBX/common/core/inc -I../Submodules/USBX/ports/cortex_m7/gnu/inc -I../Submodules/USBX/common/usbx_device_classes/inc -I../Submodules/USBX/common/usbx_stm32_device_controllers -I../Submodules/zlib -I../Submodules/SignalProcessing/ports -I../Submodules/SignalProcessing/fourier_transform_toolbox -I../Submodules/SignalProcessing/iowa_hills_filter_calculator -I../Submodules/SignalProcessing/time_domain_toolbox -I../Submodules/SignalProcessing/OmegaTransformer -I../Submodules/SignalProcessing -I../Core/Inc -I../LIBJPEG/App -I../LIBJPEG/Target -I../Utilities/JPEG -I../Middlewares/Third_Party/LibJPEG/include -I../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I../Drivers/CMSIS/Include -I../Drivers/STM32H7xx_HAL_Driver/Inc -I../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Submodules/USBX/common/core/src/ux_utility_unicode_to_string.d" -MT"Submodules/USBX/common/core/src/ux_utility_unicode_to_string.o" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "Submodules/USBX/common/core/src/ux_utility_unicode_to_string.o"
arm-none-eabi-gcc "../Submodules/USBX/common/core/src/ux_utility_virtual_address.c" -mcpu=cortex-m7 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32H743xx -DTX_INCLUDE_USER_DEFINE_FILE -DGX_INCLUDE_USER_DEFINE_FILE -DFX_INCLUDE_USER_DEFINE_FILE -DLX_INCLUDE_USER_DEFINE_FILE -DUX_INCLUDE_USER_DEFINE_FILE -DIHFC_INCLUDE_USER_DEFINE_FILE -DSTM32_THREAD_SAFE_STRATEGY=3 -DLANGUAGE_DEFAULT=LANGUAGE_ENGLISH '-DPRODUCT_NAME_STRING="DBGcfg"' '-DFIRMWARE_RELEASE_ID=""' '-DRELEASE_BRANCH_FLAG=(sizeof(FIRMWARE_RELEASE_ID) != sizeof(""))' '-DFIRMWARE_NAME_STRING="DBGcfg 200"' -DUSE_PWR_LDO_SUPPLY -c -I../Application -I../Application/BSP -I../Application/DAQ -I../Application/GUIX_project/Outputs -I../Application/GUIX_user -I../DeviceX_extended/DeviceX/chaos-pp/chaos -I../DeviceX_extended/DeviceX/drivers -I../DeviceX_extended/DeviceX -I../DeviceX_extended/DeviceX_DAQ -I../Submodules/CleftStick -I../Submodules/CMSIS-DSP/Include -I../Submodules/CMSIS-DSP/Include/dsp -I../Submodules/CMSIS-DSP/PrivateInclude -I../Submodules/EEPROM_Emulation -I../Submodules/FileX/common/inc -I../Submodules/FileX/ports/cortex_m7/gnu/inc -I../Submodules/FileX_extended -I../Submodules/GTC_Utilities -I../Submodules/GUIX/common/inc -I../Submodules/GUIX/ports/cortex_m7/gnu/inc -I../Submodules/GUIX_extended -I../Submodules/H7_device_drivers -I../Submodules/LevelX/common/inc -I../Submodules/stm32h7xx-hal-driver/Inc -I../Submodules/stm32h7xx-hal-driver/Inc/Legacy -I../Submodules/ThreadX/common/inc -I../Submodules/ThreadX/ports/cortex_m7/gnu/inc -I../Submodules/ThreadX_extended -I../Submodules/TinyPrintf -I../Submodules/USBX/common/core/inc -I../Submodules/USBX/ports/cortex_m7/gnu/inc -I../Submodules/USBX/common/usbx_device_classes/inc -I../Submodules/USBX/common/usbx_stm32_device_controllers -I../Submodules/zlib -I../Submodules/SignalProcessing/ports -I../Submodules/SignalProcessing/fourier_transform_toolbox -I../Submodules/SignalProcessing/iowa_hills_filter_calculator -I../Submodules/SignalProcessing/time_domain_toolbox -I../Submodules/SignalProcessing/OmegaTransformer -I../Submodules/SignalProcessing -I../Core/Inc -I../LIBJPEG/App -I../LIBJPEG/Target -I../Utilities/JPEG -I../Middlewares/Third_Party/LibJPEG/include -I../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I../Drivers/CMSIS/Include -I../Drivers/STM32H7xx_HAL_Driver/Inc -I../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Submodules/USBX/common/core/src/ux_utility_virtual_address.d" -MT"Submodules/USBX/common/core/src/ux_utility_virtual_address.o" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "Submodules/USBX/common/core/src/ux_utility_virtual_address.o"
arm-none-eabi-gcc "../Submodules/TinyPrintf/printf.c" -mcpu=cortex-m7 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32H743xx -DTX_INCLUDE_USER_DEFINE_FILE -DGX_INCLUDE_USER_DEFINE_FILE -DFX_INCLUDE_USER_DEFINE_FILE -DLX_INCLUDE_USER_DEFINE_FILE -DUX_INCLUDE_USER_DEFINE_FILE -DIHFC_INCLUDE_USER_DEFINE_FILE -DSTM32_THREAD_SAFE_STRATEGY=3 -DLANGUAGE_DEFAULT=LANGUAGE_ENGLISH '-DPRODUCT_NAME_STRING="DBGcfg"' '-DFIRMWARE_RELEASE_ID=""' '-DRELEASE_BRANCH_FLAG=(sizeof(FIRMWARE_RELEASE_ID) != sizeof(""))' '-DFIRMWARE_NAME_STRING="DBGcfg 200"' -DUSE_PWR_LDO_SUPPLY -c -I../Application -I../Application/BSP -I../Application/DAQ -I../Application/GUIX_project/Outputs -I../Application/GUIX_user -I../DeviceX_extended/DeviceX/chaos-pp/chaos -I../DeviceX_extended/DeviceX/drivers -I../DeviceX_extended/DeviceX -I../DeviceX_extended/DeviceX_DAQ -I../Submodules/CleftStick -I../Submodules/CMSIS-DSP/Include -I../Submodules/CMSIS-DSP/Include/dsp -I../Submodules/CMSIS-DSP/PrivateInclude -I../Submodules/EEPROM_Emulation -I../Submodules/FileX/common/inc -I../Submodules/FileX/ports/cortex_m7/gnu/inc -I../Submodules/FileX_extended -I../Submodules/GTC_Utilities -I../Submodules/GUIX/common/inc -I../Submodules/GUIX/ports/cortex_m7/gnu/inc -I../Submodules/GUIX_extended -I../Submodules/H7_device_drivers -I../Submodules/LevelX/common/inc -I../Submodules/stm32h7xx-hal-driver/Inc -I../Submodules/stm32h7xx-hal-driver/Inc/Legacy -I../Submodules/ThreadX/common/inc -I../Submodules/ThreadX/ports/cortex_m7/gnu/inc -I../Submodules/ThreadX_extended -I../Submodules/TinyPrintf -I../Submodules/USBX/common/core/inc -I../Submodules/USBX/ports/cortex_m7/gnu/inc -I../Submodules/USBX/common/usbx_device_classes/inc -I../Submodules/USBX/common/usbx_stm32_device_controllers -I../Submodules/zlib -I../Submodules/SignalProcessing/ports -I../Submodules/SignalProcessing/fourier_transform_toolbox -I../Submodules/SignalProcessing/iowa_hills_filter_calculator -I../Submodules/SignalProcessing/time_domain_toolbox -I../Submodules/SignalProcessing/OmegaTransformer -I../Submodules/SignalProcessing -I../Core/Inc -I../LIBJPEG/App -I../LIBJPEG/Target -I../Utilities/JPEG -I../Middlewares/Third_Party/LibJPEG/include -I../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I../Drivers/CMSIS/Include -I../Drivers/STM32H7xx_HAL_Driver/Inc -I../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Submodules/TinyPrintf/printf.d" -MT"Submodules/TinyPrintf/printf.o" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "Submodules/TinyPrintf/printf.o"
../Submodules/TinyPrintf/printf.c: In function '_out_char':
../Submodules/TinyPrintf/printf.c:155:11: error: implicit declaration of function 'putchar' [-Wimplicit-function-declaration]
155 | putchar(character);//_putchar(character);
| ^~~~~~~
../Submodules/TinyPrintf/printf.c:120:1: note: include '<stdio.h>' or provide a declaration of 'putchar'
119 | #include <float.h>
+++ |+#include <stdio.h>
120 | #endif
make: *** [Submodules/TinyPrintf/subdir.mk:19: Submodules/TinyPrintf/printf.o] Error 1
make: *** Waiting for unfinished jobs....
"make -j6 all" terminated with exit code 2. Build might be incomplete.
13:31:24 Build Failed. 3 errors, 0 warnings. (took 1m:23s.724ms)I managed to get around the issue by making two changes:
After making these changes, the project compiles correctly, with a variety of non-standard-library warnings.
I am starting to think that STM32CubeIDE post-2.0.0 either 'escalates' library-related warnings to errors, or indexes libraries differently from how it works with 'project' files.
2026-03-18 6:08 PM - edited 2026-03-18 6:13 PM
Almost every CubeIDE update comes with new toolchain (compiler, linker) which of course has various changes.
You can install previous toolchain that was used before the update, and enjoy peace of mind. Update to the new compiler later, whenever you want.
The compiler command line options are visible in the log. If no -Werrror there - then it is not in effect.
2026-03-23 9:50 AM
The issue is that this should not be an error:
[-Wimplicit-function-declaration]
I have worked around it, but it still seems wrong.
2026-03-23 12:04 PM - edited 2026-03-23 2:34 PM
Implicitly defined functions are invalid as of C99. Not just deprecated, but invalid. That's 27 years ago. I think an error for using a "feature" which was made invalid 27 years ago is reasonable.
Regardless, this isn't a STM32CubeIDE thing, it's a GCC decision, and it has nothing to do with -Werror.
2026-03-25 5:44 PM
My read of the GCC warning options is that "-Wimplicit-function-declaration" should be a warning unless -Werror or -pedantic-errors -Wno-error=pedantic are selected. It seems like some people make the case that GCC should not support implicit function declarations, because of the C99 change you mention, but GCC seems to support them.