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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> #define FUNCTION() vs. inline Function(), второе более "модно", а почему?
ViKo
сообщение Sep 4 2015, 09:50
Сообщение #16


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

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



Цитата(zltigo @ Sep 4 2015, 12:44) *
В вопросе НЕ БЫЛО про заинлайненую функцию. О передаче арнгментов ЗАИНЛАЙНЕННОЙ функции говорить вообще бесмысленно, ибо нет уже ни функции, ни аргументов.
Так-что и ответ не про занлайненную.

Вся тема посвящена inline функциям.

Цитата(CrimsonPig @ Sep 4 2015, 12:22) *
это не одно и то же.. Это разные вещи, и область применения у них разная.

Вот об этом и прошу высказаться.
Go to the top of the page
 
+Quote Post
CrimsonPig
сообщение Sep 4 2015, 09:51
Сообщение #17


Местный
***

Группа: Участник
Сообщений: 329
Регистрация: 23-04-14
Пользователь №: 81 502



Цитата(ViKo @ Sep 4 2015, 10:35) *
Сейчас макрофункция инициализации порта компилируется в ~14 команд (+ память для констант):


Ну так попробуйте и нам расскажите sm.gif
Не, понятно, что вы дочитали книжку до описания inline функций и пытаетесь всунуть их теперь куда нужно и не нужно. Не волнуйтесь, все этим занимаются по началу sm.gif
Хотите еще занятие на полгода примерно ? Почитайте про шаблоны в Ц++ и попытайтесь переписать свой код инициализации на рекурсивных шаблонах и прочей радости sm.gif
Это можно сделать.. некорорые даже это делают. Нормально получается у единиц, и никто не пользуется в результате sm.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Sep 4 2015, 09:55
Сообщение #18


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

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



Цитата(CrimsonPig @ Sep 4 2015, 12:51) *
Ну так попробуйте и нам расскажите sm.gif
Не, понятно, что вы дочитали книжку до описания inline функций и пытаетесь всунуть их теперь куда нужно и не нужно. Не волнуйтесь, все этим занимаются по началу sm.gif

Я не волнуюсь. Вам же повторю "Если нечего сказать, не говори ничего." biggrin.gif
Go to the top of the page
 
+Quote Post
CrimsonPig
сообщение Sep 4 2015, 10:07
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 329
Регистрация: 23-04-14
Пользователь №: 81 502



Цитата(ViKo @ Sep 4 2015, 10:55) *
Я не волнуюсь. Вам же повторю "Если нечего сказать, не говори ничего." biggrin.gif


Спасибо вам за совет. Идите.... в гугль, там вам место sm.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 4 2015, 10:18
Сообщение #20


Гуру
******

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



QUOTE (ViKo @ Sep 4 2015, 12:35) *
И что, inline функция такого не осилит сотворить? 01.gif

Или да, или нет. Завистит от того, насколько компилятор сможет перелопатить с слепить воедино. В идеале без разницы. Реальность надо смотреть.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Sep 6 2015, 18:46
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(zltigo @ Sep 4 2015, 13:18) *
В идеале без разницы. Реальность надо смотреть.

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


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
ViKo
сообщение Sep 7 2015, 09:03
Сообщение #22


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

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



А я проверил. Всё то же, inline функция GPIO_conf(...) с 80 переменными скомпилировалась в те же 14-16 команд. С точностью до байта не проверял, потому что только для одного порта запустил. Кейл - молоток!
Go to the top of the page
 
+Quote Post
Valentine Logino...
сообщение Sep 10 2015, 07:02
Сообщение #23


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

Группа: Участник
Сообщений: 78
Регистрация: 7-04-10
Из: Пушкино
Пользователь №: 56 462



Если много аргументов - передавайте указатель на структуру. Современные компиляторы и это нормально скомпилируют (лучше проверить конечно), зато выглядеть будет чуть симпатичнее.
Код
typedef struct { ...  } InitConfig;
static inline void Init(InitConfig const *config) {}

...

InitConfig const init_config = { ... };
Init(&init_config);
Go to the top of the page
 
+Quote Post

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

 


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


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