Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как работает inline в IAR AVR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
fmdost
Доброго времени суток Уважаемые.
Хочу разобраться с работой #pragma inline
Есть функция
Код
#pragma inline=forced
void port(void)
{
port=1;
asm ("nop");
asm ("nop");
port=0;
}

Где эту директиву размещать? Перед каждым вызовом функции или можно непосредственно в функции?
Сейчаc у меня оптимизация отключена, но почему-то пищет, что слишком низкий уровень оптимизации для inline функции, и вызывает через CALL.
Спасибо.
dxp
Цитата(Т.Достоевский @ Sep 9 2007, 07:12) *
Хочу разобраться с работой #pragma inline
Есть функция
Код
#pragma inline=forced
void port(void)
{
port=1;
asm ("nop");
asm ("nop");
port=0;
}

Где эту директиву размещать? Перед каждым вызовом функции или можно непосредственно в функции?

Размещать непосредственно перед прототипом функции, либо, если прототип не указан, непосредственно перед функцией. В документации есть примеры.

Цитата(Т.Достоевский @ Sep 9 2007, 07:12) *
Сейчаc у меня оптимизация отключена, но почему-то пищет, что слишком низкий уровень оптимизации для inline функции, и вызывает через CALL.

Точно не помню, но кажется, на низких уровнях оптимизации инлайнинг не работает, как и многие другие методы оптимизации.
fmdost
Цитата(dxp @ Sep 9 2007, 08:07) *
Размещать непосредственно перед прототипом функции, либо, если прототип не указан, непосредственно перед функцией. В документации есть примеры.

примеры не очень там.
inline заработал только на медиум.
Спасибо.
alexander55
Цитата(Т.Достоевский @ Sep 9 2007, 04:12) *
Сейчаc у меня оптимизация отключена, но почему-то пищет, что слишком низкий уровень оптимизации для inline функции, и вызывает через CALL.

Если Вы включите оптимизацию по скорости, то даже без inline короткие функции будут встраиваться в места вызова. Просмотрите по листингу - это очень наглядно. Я в первый раз был удивлен, а сейчас считаю это правильным.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.