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

 
 
> WinAVR2009 : inline functions, замечаю странности...
_Pasha
сообщение Dec 24 2009, 10:50
Сообщение #1


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Привет всем!
Давно замечаю неадекватности при работе с инлайнами типа
Код
#define SomePin 5
static inline void pin_out(const uint8_t val) __attribute__((always_inline));
void pin_out(const uint8_t val)
{
if(val) PORTB |=(1<<SomePin); else PORTB &=~(1<<SomePin);
}

static inline uint8_t pin_in(void) __attribute__((always_inline));
uint8_t pin_in(void)
{
  return (PINB & (1<<SomePin))? 1:0;
}


Если с первой функцией все однозначно и красиво переводится, то со второй время от времени происходят чудеса. Сейчас пишу - pin_in() транслируется в sbis PINB,SomePin. Недавно - выдал какую-то чушь с чтением, наложением маски и проверкой на нуль и еще чего-то mov. Не могу понять, какие настройки его сводят с ума. Если кто сталкивается с подобным - отпишитесь в эту тему для сбора инфы. Спасибо.
Go to the top of the page
 
+Quote Post



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

 


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


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