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

 
 
 
Reply to this topicStart new topic
> Уродливый #define inline во FreeRTOS, не наступайте на грабли
HARMHARM
сообщение Oct 17 2008, 23:04
Сообщение #1


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Честно говоря, такой кривости не ожидал. Но расскажу по порядку.

Решил в классах вынести тела inline функций за класс, чтоб смотрелось поприличнее.
Вынес, сразу вылезла ошибка линкера:
Код
Error[e27]: Entry "TOneWire::isDevicePresent()" in module application ( Application\obj\application.r79 ) redefined in module onewire ( Application\obj\onewire.r79 )

Удивился, стал разбираться. Если тело inline функции находится внутри описания класса - то никакой ругани. Раскопал такое в portmacro.h:
Код
/* Compiler specifics. */
#define inline

Оказвается, уважаемый автор FreeRTOS таким образом маскирует пару inline определений в tasks.h.
Мда. Вот ЭТО quirk!
inline из tasks.h был порезан вместе с дефайном - проблема исчезла. Желаю не наступать на мои грабли.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 18 2008, 00:43
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(HARMHARM @ Oct 18 2008, 01:04) *
Честно говоря, такой кривости не ожидал. Но расскажу по порядку.

На то оно и portmacro.h дабы все кривости максимально свалить в одну кучу. Ну а вообще, конечно, халявные порты жутковаты sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Oct 18 2008, 09:19
Сообщение #3


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Кстати, приложу мой враппер для FreeRTOS. Не полный, только задачи, очереди и семафоры.
За пример оформления спасибо Andy Mozzhevilov.
Прикрепленные файлы
Прикрепленный файл  taskcpp.rar ( 1.09 килобайт ) Кол-во скачиваний: 86
 
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 18 2008, 17:32
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(HARMHARM @ Oct 18 2008, 11:19) *
Кстати, приложу мой враппер для FreeRTOS.

Вы бы еще попытались объяснить, накой он вообще сдался sad.gif....


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Oct 19 2008, 09:02
Сообщение #5


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Цитата(zltigo @ Oct 18 2008, 20:32) *
Вы бы еще попытались объяснить, накой он вообще сдался sad.gif....

Иногда хочется иметь задачу в классе. Конечно, можно перейти на scmrtos, но как-то я к FreeRTOS привык... Более простым методом включить задачу в класс у меня не вышло.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 01:56
Рейтинг@Mail.ru


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