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

 
 
> ф-я инлайн, не хочет компилится
Метценгерштейн
сообщение Jun 22 2015, 11:26
Сообщение #1


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

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



Keil, ARM

создаю ф-ю
Код
inline void lowPowerHeat (void)
{    
    fSinglePower = 1;
    fDowblePower  =0;
}

где присваиваю двум глобальным переменным значения.
Дальше по коду вызываю эту ф-ю. Но выдает ошибку
.\_build\v1_0_alpha.axf: Error: L6218E: Undefined symbol lowPowerHeat (referred from logic_work.o).

стоит только или:
1 -убрать inline или
2- дописать static или
3- закомментировать любую переменную внутри ф-ии или
4- внутри тела файла один из двух (любой) вызов ф-ии закомментить, то

ошибка пропадает.
А почему так?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Harvester
сообщение Jun 22 2015, 13:42
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846



Насколько я понимаю, inline-функция просто по-определению должна быть static.


--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
Go to the top of the page
 
+Quote Post
CrimsonPig
сообщение Jun 22 2015, 15:11
Сообщение #3


Местный
***

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



Цитата(Harvester @ Jun 22 2015, 14:42) *
Насколько я понимаю, inline-функция просто по-определению должна быть static.


Вы таки понимаете неправильно. inline и static понятия ортогональные.
P.S. Компилятор должен видеть всю inline функцию целиком. Поэтому если она используется в нескольких модулях, то обычно целиком включается в заголовочный файл. Если она используется только в одном модуле, то можно ее текст включить только в исходник этого модуля. В последнем случае static не помешает но и не поможет сильно.
И вообще это все в любом букваре описано.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Метценгерштейн   ф-я инлайн   Jun 22 2015, 11:26
- - Lotor   Подозреваю, что Вам стоит убрать инлайновую функци...   Jun 22 2015, 11:34
- - Метценгерштейн   а почему? Она в .c находится. Разве так нельзя?   Jun 22 2015, 12:16
- - Метценгерштейн   понятно, что статик- это область видимости только....   Jun 22 2015, 17:24
|- - AHTOXA   Да вроде даже интуитивно понятно - чтобы подставит...   Jun 22 2015, 18:45
|- - Метценгерштейн   Цитата(AHTOXA @ Jun 22 2015, 21:45) Да вр...   Jun 22 2015, 19:57
|- - jcxz   Цитата(Метценгерштейн @ Jun 23 2015, 01:5...   Jun 23 2015, 02:59
|- - AHTOXA   Цитата(Метценгерштейн @ Jun 23 2015, 00:5...   Jun 23 2015, 04:45
- - halfdoom   Цитата(Метценгерштейн @ Jun 22 2015, 14:2...   Jun 23 2015, 04:51
|- - jcxz   Цитата(halfdoom @ Jun 23 2015, 10:51) Есл...   Jun 23 2015, 05:22
- - Метценгерштейн   Всем привет. Попробуем еще раз сначала. Допускаю, ...   Jun 23 2015, 06:10
- - ViKo   Может, компилятор выбросил ненужную переменную?   Jun 23 2015, 06:45
|- - CrimsonPig   Цитата(ViKo @ Jun 23 2015, 07:45) Может, ...   Jun 23 2015, 07:47
- - Метценгерштейн   еще раз, я в одном файле .c создал эту inline ф-ю ...   Jun 23 2015, 07:57
- - ar__systems   Цитата(Метценгерштейн @ Jun 23 2015, 02:5...   Jun 23 2015, 23:47


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

 


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


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