Доброго дня !
Есть 3 вопроса, на которые я самостоятельно не смог найти ответ - решил обратится за помощью:
1. Ругается варнингом:
Код
In function 'Load_Default_Parametrs' passing argument 1 of 'eeprom_write_block' discards qualifiers from pointer target type
на эту строку :
Код
eeprom_write_block((void*)&Parametrs_Ram, (void*) 0x01, sizeof(Parametrs_Ram));
что касается первого аргумента Parametrs_Ram:
Код
volatile Params_Struct Parametrs_Ram; //объявление
typedef struct{ //переопределение типа
unsigned char Ind_Period;
unsigned char Querry_Tout;
unsigned char RS_Address;
unsigned char RS_Speed;
unsigned int CRC;
}Params_Struct;
как только убираю модификатор volatile из объявления Parametrs_Ram - варнинги уходят, но мне нужна Parametrs_Ram именно как volatile.
Явное приведение в функции eeprom_write_block к какому-либо типу ни к чему не приводит.
Боротся с варнингами или пустить на самотек ? Если бороться, то что я делаю не так ?
2. Вопрос по inline-функции. Как правильно объявить, определить, вызвать ?
Делаю так:
Прототип:
void func ();Определение:
inline void func (){...код...}Вызов:
void func ();Ругается так:
warning: C99 inline functions are not supported; using GNU89 to disable this warning use -fgnu89-inline or the gnu_inline function attribute
Добавление в опциях проекта -fgnu89-inline варнинг не отключило.
3. То, что меня убило наповал... Есть проект, есть 2 машины на которых установлены одинаковые версии AVR Studio и WinAVR20071221. На десктопе все ок. В процессе разработки проекта ничего сверхъестественного не было. Копирую проект на ноут, компилирую - размер кода +700 байт, +256 байт озу. Вот эта магическая строчка из map-файла:
Код
.data 0x00800060 0x100 c:/winavr-20071221/bin/../lib/gcc/avr/4.2.2/avr5\libgcc.a(_clz.o)
0x00800060 __clz_tab
с __clz_tab дело уже имел (тему старую не смого найти, к сожалению) - тогда подключал математическую библиотеку libm.a и как рукой снимало. На этот раз - на ноуте не помогает. Настройки проекта естественно не меняю...библиотеки подключаю те же, что и на десктопе...
Также осознаю, что звучит это как-то глупо, но я в ступоре...
Устанавливал последнюю версию WinAVR20081205 - проблем с __clz_tab нет. Объём кода при компиляции отличается на 6 байт (на ноуте больше)...