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

 
 
> Не могу скомпилить FREERTOS в IAR ARM 5.50
MALLOY2
сообщение Jun 6 2010, 09:44
Сообщение #1


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Не могу скомпилить FREERTOS в IAR ARM 5.50 если включаю "Multi-file Compilation", как только подключаю queue.h компилятор выдает кучу таких ошибок

Цитата
Error[Pe1061]: declaration of function "xQueueGenericSend" is incompatible with a declaration in another translation unit D:\Develop\xxxx\Firmware\Cortex\Source\FreeRTOS\Include\queue.h 472
the other declaration is at line 451 of "D:\Develop\xxxx\Firmware\Cortex\Source\FREERTOS\queue.c"


Уже второй день бьюсь не могу их подружить. Без "Multi-file Compilation" работает все нормально.

Как только пост создал и проблема частично решилась.

Вся беда в том что, в queue.h тип xQueueHandle обьявлен как void
Код
typedef void * xQueueHandle;


а в queue.c как структура
Код
typedef xQUEUE * xQueueHandle;


Вылечил так.

Подключил queue.h в queue.c
Определение структуры xQUEUE вынес в queue.h сюдаже и определение типа xQueueHandle. Все собралось, еще не осознал чем это грозит, да и не красиво как то, может есть еще варианты ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MALLOY2
сообщение Jun 6 2010, 10:24
Сообщение #2


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Решил более красивее сделать и на этом остановиться в файле queue.h земеняем определение
Код
typedef void * xQueueHandle;


на

Код
struct QueueDefinition;  //<-- forward declaration
typedef struct QueueDefinition* xQueueHandle;


Цитата
А оно Вам надо?


Просто это наиболее быстрый метод достижения цели как мне кажется. Есть старый проект который строился и строился. Теперь ему немного не хватает ресурсов по скорости, можно конечно поставить еще мощнее проц но это же не быстро, сильно вникать в чужие алгоритмы с целью их оптимизации тоже не то, просмотрев код увидел один геморой типа: код кочевал по разным платформам и операционкам в итоге функции обрасли трех этажными обьвертками а так как они находятся в разных модулях компилятор соответственно делает трех этажные вызовы, немного попробывал через дефайны упростить вроде лучше становится, но дефайны это еще один камень в этом огороде, вот и решил попробывать Multi-file Compilation с надеждой что он все за инлайнит.

"discard unused public" - глюк еще тот никогда не включаю.
Go to the top of the page
 
+Quote Post



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

 


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


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