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

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

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

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

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


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

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

 

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

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

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


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

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

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


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

 

 

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

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

 

 

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

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

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


Ссылка на сообщение
Поделиться на другие сайты
если вам не нужен инлайн то наверно вам можно только позавидовать.

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

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


Ссылка на сообщение
Поделиться на другие сайты
если вам не нужен инлайн то наверно вам можно только позавидовать.

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

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


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

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

 

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

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

 

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

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

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


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

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

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

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


Ссылка на сообщение
Поделиться на другие сайты
файл .h
static inline uint32_t SYSTIME_GetSystemTime(void)
{   
    //do something
}

и всё

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


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

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

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


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

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

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


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

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

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти