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

 
 
> #define FUNCTION() vs. inline Function(), второе более "модно", а почему?
ViKo
сообщение Sep 3 2015, 08:13
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Собственно, весь вопрос в заголовке темы. Помню фразы, что в C++ роль макроопределений много меньше, чем в C. Стало быть, надо ориентироваться на inline функции?

К примеру, задать бит в порту можно с одинаковым успехом обоими вариантами. Для единообразия пошел по второму:
Код
__forceinline void FpRq_off(void)
{
  GPIOA->BSRR = FPRQ_H;
}

Но, скажем, функцию задержки, вычисляющую начальное значение счетчика в зависимости от времени, делаю комбинацией макрофункции со встроенной функцией.

Код
#define DELAY(VALUE, UNIT)    \
  DelayFourCycles(((VALUE) * UNIT * (SYSCLK / 1000000) + 3999) / 4000)

#pragma push
#pragma O3
__forceinline void DelayFourCycles(uint32_t FC)
{
__asm {
LOOP:
    SUBS FC, FC, #1
    BNE LOOP
  }
}
#pragma pop


Хочу просветления. Или уже...? rolleyes.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ViKo   #define FUNCTION() vs. inline Function()   Sep 3 2015, 08:13
- - dimka76   Например с точки зрения удобства. С инлайн фукциям...   Sep 3 2015, 08:25
|- - zltigo   QUOTE (dimka76 @ Sep 3 2015, 11:25) С инл...   Sep 3 2015, 11:58
- - ViKo   Еще один пример. Я не представляю, как сделать это...   Sep 3 2015, 08:39
- - CrimsonPig   Цитата(ViKo @ Sep 3 2015, 09:13) Собствен...   Sep 3 2015, 09:19
|- - ViKo   Цитата(CrimsonPig @ Sep 3 2015, 12:19) Ва...   Sep 3 2015, 10:31
- - _4afc_   В Watcom C inline не всегда инлайнились если inlin...   Sep 3 2015, 09:34
- - Valentine Loginov   Inline-функции, как было сказано, позволяют сделат...   Sep 4 2015, 05:39
|- - ViKo   Цитата(Valentine Loginov @ Sep 4 2015, 08...   Sep 4 2015, 07:37
|- - zltigo   QUOTE (ViKo @ Sep 4 2015, 10:37) Немного ...   Sep 4 2015, 08:30
|- - ViKo   Цитата(zltigo @ Sep 4 2015, 11:30) А что,...   Sep 4 2015, 08:38
|- - zltigo   QUOTE (ViKo @ Sep 4 2015, 11:38) Э-э, себ...   Sep 4 2015, 09:11
|- - CrimsonPig   Цитата(zltigo @ Sep 4 2015, 10:11) Вы это...   Sep 4 2015, 09:22
||- - zltigo   QUOTE (CrimsonPig @ Sep 4 2015, 12:22) Ну...   Sep 4 2015, 09:44
||- - ViKo   Цитата(zltigo @ Sep 4 2015, 12:44) В вопр...   Sep 4 2015, 09:50
|- - ViKo   Цитата(zltigo @ Sep 4 2015, 12:11) Функци...   Sep 4 2015, 09:35
|- - CrimsonPig   Цитата(ViKo @ Sep 4 2015, 10:35) Сейчас м...   Sep 4 2015, 09:51
||- - ViKo   Цитата(CrimsonPig @ Sep 4 2015, 12:51) Ну...   Sep 4 2015, 09:55
||- - CrimsonPig   Цитата(ViKo @ Sep 4 2015, 10:55) Я не вол...   Sep 4 2015, 10:07
|- - zltigo   QUOTE (ViKo @ Sep 4 2015, 12:35) И что, i...   Sep 4 2015, 10:18
|- - Dog Pawlowa   Цитата(zltigo @ Sep 4 2015, 13:18) В идеа...   Sep 6 2015, 18:46
- - ViKo   А я проверил. Всё то же, inline функция GPIO_conf(...   Sep 7 2015, 09:03
- - Valentine Loginov   Если много аргументов - передавайте указатель на с...   Sep 10 2015, 07:02


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

 


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


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