Программирование AVR: решение проблем, FAQ Как избавиться от предупреждения о не инициализированной переменной Fri, January 20 2017  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Как избавиться от предупреждения о не инициализированной переменной Печать
Добавил(а) microsin   

При использовании констант с директивой 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.

 

Добавить комментарий


Защитный код
Обновить

Top of Page