Перейти к содержанию
    

Инлайновая функция

Если я определяю функцию как инлайн

файл .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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

то есть функцию надо разместить в .h файле по другому никак?

А как иначе компилятор получит тело функции для встраивания?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зачем вам этот инлайн? Включайте в яре "multifile compilation" и оптимизацию, он сам заинлайнит получше любых вот этих потуг.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зачем вам этот инлайн? Включайте в яре "multifile compilation" и оптимизацию, он сам заинлайнит получше любых вот этих потуг.

 

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

 

А как иначе компилятор получит тело функции для встраивания?

я думал как и обычные функции - из .h файла

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так он заинлайнит все функции

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

 

а мне нужно несколько.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

 

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

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

 

 

Свидетели секты пресвятого инлайна. :excl:

если вам не нужен инлайн то наверно вам можно только позавидовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если вам не нужен инлайн то наверно вам можно только позавидовать.

Я Вас уверяю, компилятор может посчитать, что и Вам inline, собственно, не нужен, и не станет вставлять тело функции, а вызовет ее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если вам не нужен инлайн то наверно вам можно только позавидовать.

Вы как бы даже не задумались, что подобные проблемы здесь на форуме возникают только у Вас? Совсем ни о чём не говорит? :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Вы как бы даже не задумались, что подобные проблемы здесь на форуме возникают только у Вас? Совсем ни о чём не говорит? :biggrin:

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

 

ну если все то размер кода вырастит в 10 раз.

Где такую забористую @$# берёте? В IAR поставьте оптимизацию Balanced и забудьте раз и навсегда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Где такую забористую @$# берёте? В IAR поставьте оптимизацию Balanced и забудьте раз и навсегда.

Вот-вот, я в эту же сторону намекаю :beer:

Этот инлайн - тяжёлое наследие кровавого прошлого, когда сердобольные кодеры читали листинг дизассемблера и рыдали от горя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

файл .h
static inline uint32_t SYSTIME_GetSystemTime(void)
{   
    //do something
}

и всё

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Четкие пацаны, которым нужен четкий инлайн пишут не функции, а макросы. Ну а потом уже разбираются с этим счастьем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Четкие пацаны, которым нужен четкий инлайн пишут не функции, а макросы. Ну а потом уже разбираются с этим счастьем.

Поддерживаю. :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Четкие пацаны, которым нужен четкий инлайн пишут не функции, а макросы. Ну а потом уже разбираются с этим счастьем.

Отладить сложно неудобно в макросах, плюс проверка на соответствие типов в макросах отсутствует... ИМХО, не очень удобно. Хотя сам пользуюсь :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...