При использовании констант с директивой PROGMEM иногда появляются предупреждения о том, что "не инициализированная переменная была размещена в области памяти программ".
../usbdrv/usbdrv.h:453:12: warning: uninitialized variable 'usbDescriptorDevice'
put into program memory area [-Wuninitialized]
Пример кода, на который будет выдаваться такое предупреждение:
extern PROGMEM const char usbDescriptorDevice[];
Причина в том, что в командной строке компилятора -GCC была использована либо опция -Wall, либо опция -Wuninitialized:
CFLAGS += -Wall -gdwarf-2 -DF_CPU=16000000UL -Os -fsigned-char
Опция -Wall включает предупреждения о не инициализированных переменных (-Wuninitialized), и также о не используемых переменных (-Wunused). Таким образом, нужно изменить makefile так, чтобы -Wuninitialized не использовалась, тогда предупреждение исчезнет:
#CFLAGS += -Wall -gdwarf-2 -DF_CPU=16000000UL -Os -fsigned-char
CFLAGS += -Wunused -gdwarf-2 -DF_CPU=16000000UL -Os -fsigned-char
[Ссылки]
1. Options to Request or Suppress Warnings site:delorie.com. |