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

 
 
> Условная компиляция в WinAVR
injen-d
сообщение Apr 17 2008, 16:54
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 91
Регистрация: 10-10-07
Из: Воронежа
Пользователь №: 31 250



Хочу, чтоб компилился кусок кода(обработчик прерывания), только если используется нужная мне функция(которая собственно использует эти прерывания).
В CodeVisionAVR есть удобное средство:
Код
#if funcused имя_функции_без_скобок

А вот в GCC, как ни искал - ничего похожего не нашел.
Все бы ничего, но объявленный обработчик прерывания линкуется, как и положено, в любом случае.
Код
ISR(USART_UDRE_vect)
{}

Есть ли альтернатива #if funcused ? Очень хочется, чтоб критерием выбора компилировать/не компилировать был только факт использования в итоговом(после выброса мусора) коде какой-либо, нужной мне функции.


--------------------
- Бендер, ты же робот, зачем тебе пить пиво?
- Незачем! Я могу бросить в любой момент!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Maddy
сообщение Apr 18 2008, 18:45
Сообщение #2


Участник
*

Группа: Validating
Сообщений: 56
Регистрация: 15-10-06
Пользователь №: 21 335



То-ли я вопроса не понял , то-ли гранаты не той системы
для gcc OPTIMIZATION = -O3 -ffunction-sections -fdata-sections
для ld LD_EXTRA_FLAGS = -Wl,--gc-sections
и все не используемые финкции спокойно выкидываються .....
ЗЫ это из мейка для gcc-avr32 - работает однако wink.gif
Go to the top of the page
 
+Quote Post
injen-d
сообщение Apr 18 2008, 19:33
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 91
Регистрация: 10-10-07
Из: Воронежа
Пользователь №: 31 250



Цитата(Maddy @ Apr 18 2008, 22:45) *
То-ли я вопроса не понял , то-ли гранаты не той системы
для gcc OPTIMIZATION = -O3 -ffunction-sections -fdata-sections
для ld LD_EXTRA_FLAGS = -Wl,--gc-sections
и все не используемые финкции спокойно выкидываються .....
ЗЫ это из мейка для gcc-avr32 - работает однако wink.gif

Вы не поняли вопроса. Все что Вы написали конечно же используется. Но, как я написал, я хочу условно компилить обработчик прерывания, а на них указанные Вами флаги не распространяются, потому как эти функции(обработчики) вызываются при возникновении прерывания, а не из программы, поэтому компилятор их использование/неиспользование определить не может, поэтому они линкуются всегда.


--------------------
- Бендер, ты же робот, зачем тебе пить пиво?
- Незачем! Я могу бросить в любой момент!
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:45
Рейтинг@Mail.ru


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