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

 
 
> Как заставить IAR
_Артём_
сообщение Mar 25 2007, 00:09
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



не использовать команду CALL при вызове inline-функции?
Но не используя макросы.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alex11
сообщение Mar 25 2007, 00:44
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



#pragma inline=forced
Это если собственная функция объявлена как inline, а если встроенная, то может и не помочь.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Mar 25 2007, 01:56
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Alex11 @ Mar 24 2007, 23:44) *
#pragma inline=forced
Это если собственная функция объявлена как inline, а если встроенная, то может и не помочь.


То есть функция вида

inline void SomeFunction(void)
{
// тело функции
}

не будет откомпилирована как inline-функция? Почему?
Кстати функция своя, а не встроенная
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 25 2007, 03:11
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(_Артём_ @ Mar 25 2007, 00:56) *
не будет откомпилирована как inline-функция? Почему?
Кстати функция своя, а не встроенная
Режим компиляции С или С++? Если С, то static void SomeFunction(void); если С++, то как сказал Alex11
Код
#pragma inline=forced
inline void SomeFunction(void)
{
// тело функции
}
или
_Pragma("inline=forced") inline void SomeFunction(void)
{
// тело функции
}
Но это определение функции должно быть в той же единице компиляции, что и место вызова (т.е. не в другом С/С++ файле).


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 25 2007, 11:40
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Для 'С++' компиляторов inline штатный прибамбас, посему:
inline void SomeFunction(void)
Для 'C' компиляторов возможность инлайнить функции поддерживается опционально, как кому удобнее. Конкретно у IAR поддерживается через #pragma inline, причем #pragma перед объявлением прототипа функции.
Квалификатор inline у 'C' компиляторов обычно такой smile.gif :
#define inline

Это:
Цитата(Сергей Борщ @ Mar 25 2007, 02:11) *
#pragma inline=forced
inline void SomeFunction(void)

уже попытка сделать "масло масляное".

Цитата(_Артём_ @ Mar 24 2007, 23:09) *
не использовать команду CALL при вызове inline-функции?

Почитать документацию на IAR компилятор, там все подробно.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post



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

 


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


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