реклама на сайте
подробности

 
 
> оптимизация Codevision ?, кривая она похоже...
axis
сообщение Aug 9 2005, 06:21
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 8-07-05
Пользователь №: 6 645



Доброго времени суток!

Не так давно - убил три часа чтобы разобраться... да так и не нашел "прямого" решения. Может быть вы подскажете ?

Есть Codevidsion AVR 1.24.6

Есть некоторое количество глобальных функций типа:

void set_date(int param);
void set_time(int param);

Есть структура, членом которой является указатель на функцию:

flash struct _ITEM{
flash char *name;
void (*item_func)(int param); // вот этот указатель
flash struct _LIST *enter;
};


Далее идет массивчик из этих структур:

flash struct _ITEM setngs_items[]={
{"DATE",set_date,0},
{"TIME",set_time,0}
};

И шо вы думаете ?

Компилится это без проблем.
А вот при ассемблировании - "не могу найти функцию set_date".

Всю голову себе сломал. "Оказывается" этот #### Codevision так "оптимизирует". Пока он не увидит "реальное" использование функции в программе, ее код он не включит в итоговый asm-файл. В итоге - asm не может найти ссылку на идентификатор...

Решил я это тупо - завел переменную-указатель, которой явно присваиваю адреса используемых функций:

void (*func)(int);
func = set_date;
func = set_time;

Надеюсь, кому-то помог, а может быть и мне кто-то поможет - расскажет как сделать это более прямым способом.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 08:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01368 секунд с 7
ELECTRONIX ©2004-2016