|
Инлайновая функция |
|
|
|
Jul 5 2018, 08:57
|
Профессионал
    
Группа: Участник
Сообщений: 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
|
|
|
|
|
 |
Ответов
|
Jul 10 2018, 10:29
|
Знающий
   
Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842

|
N3690 Цитата 146p 7.1.6.1 The cv-qualifiers 7 [ Note: volatile is a hint to the implementation to avoid aggressive optimization involving the object because the value of the object might be changed by means undetectable by an implementation. Furthermore, for some implementations, volatile might indicate that special hardware instructions are required to access the object. See 1.9 for detailed semantics. In general, the semantics of volatile are intended to be the same in C++ as they are in C. — end note ]
8p 1.9 Program execution 8 The least requirements on a conforming implementation are: — Access to volatile objects are evaluated strictly according to the rules of the abstract machine Т.е. оно не заоптимизирует указатель даже если не видит переприсваиваний ему, а в нужном участке кода считает его значение и выполнит вызов функции по нему. Отчего у вас в голове родилась странная идея что внутри тела фукнции будет отключена оптимизация я не знаю. Она неверна. Цитата(aiwa @ Jul 10 2018, 10:11)  { ((void (* volatile)())func)(); // оптимизирует несмотря на volatile. наверное потому, что получаемый указатель rvalue; } Нет волатайл объекта - нет ограничений. Вот так уже работает.
|
|
|
|
Сообщений в этой теме
Jenya7 Инлайновая функция Jul 5 2018, 08:57 aaarrr Цитата(Jenya7 @ Jul 5 2018, 11:57) то ест... Jul 5 2018, 09:13 scifi Зачем вам этот инлайн? Включайте в яре "multi... Jul 5 2018, 09:16 Jenya7 Цитата(scifi @ Jul 5 2018, 14:16) Зачем в... Jul 5 2018, 10:37  scifi Цитата(Jenya7 @ Jul 5 2018, 13:37) так он... Jul 5 2018, 10:49   Jenya7 Цитата(scifi @ Jul 5 2018, 15:49) Ну это ... Jul 5 2018, 11:09    Arlleex Цитата(Jenya7 @ Jul 5 2018, 15:09) если в... Jul 5 2018, 11:13    jcxz Цитата(Jenya7 @ Jul 5 2018, 14:09) если в... Jul 5 2018, 11:15 VladislavS Свидетели секты пресвятого инлайна. Jul 5 2018, 11:05 VladislavS Среди программистов ходит байка, что некоторые ком... Jul 5 2018, 11:31 scifi Цитата(VladislavS @ Jul 5 2018, 14:31) Гд... Jul 5 2018, 11:42 demiurg_spb Кодфайл .h
static inline uint32_t SYSTIME_GetSyste... Jul 5 2018, 13:20 Kabdim Четкие пацаны, которым нужен четкий инлайн пишут н... Jul 5 2018, 13:25 jcxz Цитата(Kabdim @ Jul 5 2018, 16:25) Четкие... Jul 5 2018, 14:38 Arlleex Цитата(Kabdim @ Jul 5 2018, 17:25) Четкие... Jul 5 2018, 14:53  Kabdim Цитата(Arlleex @ Jul 5 2018, 17:53) Отлад... Jul 6 2018, 15:36   jcxz Цитата(Kabdim @ Jul 6 2018, 18:36) Ну так... Jul 6 2018, 16:32    Kabdim Цитата(jcxz @ Jul 6 2018, 19:32) Вы полаг... Jul 8 2018, 15:52     jcxz Цитата(Kabdim @ Jul 8 2018, 18:52) Почему... Jul 8 2018, 23:47 scifi Цитата(Kabdim @ Jul 5 2018, 16:25) Четкие... Jul 5 2018, 14:59  esaulenka Цитата(scifi @ Jul 5 2018, 17:59) инлайн ... Jul 5 2018, 19:49   Сергей Борщ QUOTE (esaulenka @ Jul 5 2018, 22:49) Мож... Jul 5 2018, 23:19  jcxz Цитата(scifi @ Jul 5 2018, 17:59) Но дело... Jul 5 2018, 20:07 technik-1017 inline нужен, например, для функций в прерываниях,... Jul 5 2018, 15:19 VladislavS Начиная с C++11 в каждой новой спецификации добавл... Jul 6 2018, 03:48 scifi Цитата(VladislavS @ Jul 6 2018, 06:48) Мо... Jul 6 2018, 06:53 jcxz Цитата(VladislavS @ Jul 6 2018, 06:48) По... Jul 6 2018, 07:27  scifi Цитата(jcxz @ Jul 6 2018, 10:27) Мне здес... Jul 6 2018, 07:36   jcxz Цитата(scifi @ Jul 6 2018, 10:36) Был слу... Jul 6 2018, 07:51    demiurg_spb Цитата(jcxz @ Jul 6 2018, 10:51) А в IAR ... Jul 6 2018, 11:13     jcxz Цитата(demiurg_spb @ Jul 6 2018, 14:13) А... Jul 6 2018, 11:23      VladislavS Цитата(jcxz @ Jul 6 2018, 14:23) Но я не ... Jul 6 2018, 11:26       demiurg_spb Немного погуглив нашёл _Pragma(...)
Код#ifdef IAR
... Jul 6 2018, 11:30    scifi Цитата(jcxz @ Jul 6 2018, 10:51) Но кто д... Jul 6 2018, 11:25     jcxz Цитата(scifi @ Jul 6 2018, 14:25) Как кто... Jul 6 2018, 11:44      demiurg_spb Цитата(jcxz @ Jul 6 2018, 14:44) Ну так э... Jul 6 2018, 11:47      scifi Цитата(jcxz @ Jul 6 2018, 14:44) Да, в те... Jul 6 2018, 12:54       jcxz Цитата(scifi @ Jul 6 2018, 15:54) Это уже... Jul 6 2018, 15:24 Jenya7 вобщем вдруг осенило. вспомнилКод#define Foo(... Jul 7 2018, 05:45 Arlleex Цитата(Jenya7 @ Jul 7 2018, 08:45) вобщем... Jul 9 2018, 18:49 Kabdim Сильно удивляете. Стандарт на язык читать надо, а ... Jul 9 2018, 01:10 aiwa Цитата(Kabdim @ Jul 9 2018, 04:10) Сильно... Jul 9 2018, 20:12 jcxz Цитата(Kabdim @ Jul 9 2018, 04:10) Сильно... Jul 10 2018, 06:17  scifi Цитата(jcxz @ Jul 10 2018, 09:17) Можете ... Jul 10 2018, 06:23   jcxz Цитата(scifi @ Jul 10 2018, 09:23) Кое-чт... Jul 10 2018, 06:45    VladislavS Цитата(jcxz @ Jul 10 2018, 09:45) Соответ... Jul 10 2018, 07:10 aiwa Имхо, в случае с указателем на функцию играет роль... Jul 10 2018, 06:55 scifi Я устал объяснять. Просто скажу, что вы заблуждает... Jul 10 2018, 06:55 aiwa {
((void (* volatile)())func)(); // оптимизирует ... Jul 10 2018, 07:11 aiwa Цитата(Kabdim @ Jul 10 2018, 13:29) Нет в... Jul 10 2018, 11:32  scifi Цитата(aiwa @ Jul 10 2018, 14:32) В одном... Jul 10 2018, 11:51  Kabdim Цитата(aiwa @ Jul 10 2018, 14:32) В одном... Jul 10 2018, 13:49   aiwa Цитата(Kabdim @ Jul 10 2018, 16:49) К чем... Jul 10 2018, 14:36    jcxz Цитата(aiwa @ Jul 10 2018, 17:36) Если ег... Jul 11 2018, 06:57     jcxz Цитата(jcxz @ Jul 11 2018, 09:57) так как... Jul 11 2018, 07:59      scifi Цитата(jcxz @ Jul 11 2018, 10:59) Как вид... Jul 11 2018, 08:03       jcxz Цитата(scifi @ Jul 11 2018, 11:03) Гарант... Jul 11 2018, 08:08        scifi Цитата(jcxz @ Jul 11 2018, 11:08) Ладно -... Jul 11 2018, 08:11         jcxz Цитата(scifi @ Jul 11 2018, 11:11) И это ... Jul 11 2018, 08:12          scifi Цитата(jcxz @ Jul 11 2018, 11:12) Ну-ну..... Jul 11 2018, 08:13     aiwa Цитата(jcxz @ Jul 11 2018, 09:57) Так что... Jul 11 2018, 10:01      scifi Цитата(aiwa @ Jul 11 2018, 13:01) Стандар... Jul 11 2018, 10:03      Kabdim Цитата(aiwa @ Jul 11 2018, 13:01) Стандар... Jul 11 2018, 10:24       scifi Цитата(Kabdim @ Jul 11 2018, 13:24) преду... Jul 11 2018, 10:28        Kabdim Цитата(scifi @ Jul 11 2018, 13:28) Значит... Jul 11 2018, 10:34 VladislavS Господа, вы научно-технические извращенцы Скомпил... Jul 10 2018, 11:41 jcxz Цитата(VladislavS @ Jul 10 2018, 14:41) С... Jul 10 2018, 11:56 VladislavS Блин, секта отрицателей инлайна, оказывается, ещё ... Jul 10 2018, 12:01 demiurg_spb Тут ещё extern inline не обсосали)))
Помню что в ... Jul 10 2018, 12:26 aiwa Цитата(VladislavS @ Jul 10 2018, 15:01) Б... Jul 10 2018, 13:41 VladislavS Придумал. Если функцию разместить в другой секции,... Jul 10 2018, 14:33 Kabdim Почему ничего не меняется? По-моему меняется инлай... Jul 10 2018, 15:26 aiwa Цитата(Kabdim @ Jul 10 2018, 18:26) УПД2:... Jul 11 2018, 05:55 jcxz Цитата(Kabdim @ Jul 10 2018, 18:26) попро... Jul 11 2018, 07:10  scifi Цитата(jcxz @ Jul 11 2018, 10:10) А я при... Jul 11 2018, 07:23  Kabdim Цитата(jcxz @ Jul 11 2018, 10:10) Где??? ... Jul 11 2018, 09:06 scifi Цитата(jcxz @ Jul 11 2018, 09:57) ничто н... Jul 11 2018, 07:04 jcxz Цитата(scifi @ Jul 11 2018, 10:04) Возраж... Jul 11 2018, 07:40  scifi Код уже приводили:
Кодvoid f(void)
{
do_... Jul 11 2018, 07:45 aiwa Насколько я понимаю, под реализацией имеется ввиду... Jul 11 2018, 10:17 scifi Цитата(aiwa @ Jul 11 2018, 13:17) Однако ... Jul 11 2018, 10:20  aiwa Цитата(scifi @ Jul 11 2018, 13:20) Станда... Jul 11 2018, 10:30   scifi Цитата(aiwa @ Jul 11 2018, 13:30) В англи... Jul 11 2018, 10:35  aiwa Цитата(scifi @ Jul 11 2018, 13:20) Нет, н... Jul 12 2018, 10:01 Kabdim Кстати с волатайл буферами (если не хочется быть п... Jul 11 2018, 10:50
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|