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

 
 
6 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Инлайновая функция
Jenya7
сообщение Jul 5 2018, 08:57
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Если я определяю функцию как инлайн
Код
файл .h
inline uint32_t SYSTIME_GetSystemTime(void);
файл .с
inline uint32_t SYSTIME_GetSystemTime(void)
{  
    //do something
}
то при вызове функции IAR ругается Error[Li005]: no definition for "SYSTIME_GetSystemTime"
то есть функцию надо разместить в .h файле по другому никак?

Сообщение отредактировал Jenya7 - Jul 5 2018, 10:37
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 5 2018, 09:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Jenya7 @ Jul 5 2018, 11:57) *
то есть функцию надо разместить в .h файле по другому никак?

А как иначе компилятор получит тело функции для встраивания?
Go to the top of the page
 
+Quote Post
scifi
сообщение Jul 5 2018, 09:16
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Зачем вам этот инлайн? Включайте в яре "multifile compilation" и оптимизацию, он сам заинлайнит получше любых вот этих потуг.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jul 5 2018, 10:37
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(scifi @ Jul 5 2018, 14:16) *
Зачем вам этот инлайн? Включайте в яре "multifile compilation" и оптимизацию, он сам заинлайнит получше любых вот этих потуг.


так он заинлайнит все функции. а мне нужно несколько.

Цитата(aaarrr @ Jul 5 2018, 14:13) *
А как иначе компилятор получит тело функции для встраивания?

я думал как и обычные функции - из .h файла
Go to the top of the page
 
+Quote Post
scifi
сообщение Jul 5 2018, 10:49
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Jenya7 @ Jul 5 2018, 13:37) *
так он заинлайнит все функции

Ну это вряд ли, зависит от настроек оптимизации и характера кода. А даже если и все, что за печаль?

Цитата(Jenya7 @ Jul 5 2018, 13:37) *
а мне нужно несколько.

Интересно, зачем? Нет, правда интересно.
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Jul 5 2018, 11:05
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Свидетели секты пресвятого инлайна. excl.gif
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jul 5 2018, 11:09
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(scifi @ Jul 5 2018, 15:49) *
Ну это вряд ли, зависит от настроек оптимизации и характера кода. А даже если и все, что за печаль?


Интересно, зачем? Нет, правда интересно.

ну если все то размер кода вырастит в 10 раз. а это довольно печально.я конечно обеими руками за скорость исполнения но раздувать код до немыслимых пределов я не могу. поэтому и существует трейдофф.


Цитата(VladislavS @ Jul 5 2018, 16:05) *
Свидетели секты пресвятого инлайна. excl.gif

если вам не нужен инлайн то наверно вам можно только позавидовать.
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jul 5 2018, 11:13
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



Цитата(Jenya7 @ Jul 5 2018, 15:09) *
если вам не нужен инлайн то наверно вам можно только позавидовать.

Я Вас уверяю, компилятор может посчитать, что и Вам inline, собственно, не нужен, и не станет вставлять тело функции, а вызовет ее.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 5 2018, 11:15
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Jenya7 @ Jul 5 2018, 14:09) *
если вам не нужен инлайн то наверно вам можно только позавидовать.

Вы как бы даже не задумались, что подобные проблемы здесь на форуме возникают только у Вас? Совсем ни о чём не говорит? biggrin.gif
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Jul 5 2018, 11:31
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Среди программистов ходит байка, что некоторые компиляторы, видя в коде больше N инлайнов, решают что юзер дурак и забивают на них.

Цитата(jcxz @ Jul 5 2018, 14:15) *
Вы как бы даже не задумались, что подобные проблемы здесь на форуме возникают только у Вас? Совсем ни о чём не говорит? biggrin.gif

Неправда ваша, последователи этой секты появляются с регулярной периодичностью.

Цитата(Jenya7 @ Jul 5 2018, 14:09) *
ну если все то размер кода вырастит в 10 раз.

Где такую забористую @$# берёте? В IAR поставьте оптимизацию Balanced и забудьте раз и навсегда.
Go to the top of the page
 
+Quote Post
scifi
сообщение Jul 5 2018, 11:42
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(VladislavS @ Jul 5 2018, 14:31) *
Где такую забористую @$# берёте? В IAR поставьте оптимизацию Balanced и забудьте раз и навсегда.

Вот-вот, я в эту же сторону намекаю beer.gif
Этот инлайн - тяжёлое наследие кровавого прошлого, когда сердобольные кодеры читали листинг дизассемблера и рыдали от горя.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jul 5 2018, 13:20
Сообщение #12


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Код
файл .h
static inline uint32_t SYSTIME_GetSystemTime(void)
{  
    //do something
}
и всё


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Kabdim
сообщение Jul 5 2018, 13:25
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



Четкие пацаны, которым нужен четкий инлайн пишут не функции, а макросы. Ну а потом уже разбираются с этим счастьем.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 5 2018, 14:38
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Kabdim @ Jul 5 2018, 16:25) *
Четкие пацаны, которым нужен четкий инлайн пишут не функции, а макросы. Ну а потом уже разбираются с этим счастьем.

Поддерживаю. rolleyes.gif
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jul 5 2018, 14:53
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



Цитата(Kabdim @ Jul 5 2018, 17:25) *
Четкие пацаны, которым нужен четкий инлайн пишут не функции, а макросы. Ну а потом уже разбираются с этим счастьем.

Отладить сложно неудобно в макросах, плюс проверка на соответствие типов в макросах отсутствует... ИМХО, не очень удобно. Хотя сам пользуюсь biggrin.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th April 2024 - 20:52
Рейтинг@Mail.ru


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