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

 
 
> IAR EWARM 5.40
IgorKossak
сообщение Jul 17 2009, 11:29
Сообщение #1


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Установил IAR EWARM 5.40 и ни один пример не удаётся собрать.
1. Ошибка
Код
Error[Pe135]: namespace "OS" has no member "Run" ...\scmRTOS\Common\OS_Kernel.h 401

Пришлось добавить
Код
void Run();
в namespace OS.
2. Ошибка
Код
Error[Pe020]: identifier "TBaseProcess" is undefined ...\scmRTOS\Common\OS_Kernel.h 114

Пришлось добавить
Код
class TBaseProcess;
в начале namespace OS.
3. Ошибка
Код
Error[Pe795]: specializing function "OS::process<pr, stack_size>::Exec [with pr=OS::pr0, stack_size=(word)200U]" requires "template<>" syntax ...\Src\main.cpp 74
на строку
Код
OS_PROCESS void TProc1::Exec()

изменил на
Код
template<> OS_PROCESS void TProc1::Exec()

Выдало ошибку
Код
Error[Pe793]: explicit specialization of function "OS::process<pr, stack_size>::Exec [with pr=OS::pr0, stack_size=(word)200U]" must precede its first use ...\Src\main.cpp 74

изменил на
Код
template<TPriority pr, word stack_size> OS_PROCESS void TProc1::Exec()

и добавил в начале файла
Код
using namespace OS;

Выдало ошибку
Код
Error[Pe464]: "OS::process<OS::pr0, (word)200U>" is not a class template ...\Src\main.cpp 74

Идеи закончились. Может кто-нибудь что-нибудь посоветовать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Jul 17 2009, 14:55
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Аналогичное было при портировании на GCC. Видать у ИАРа в этом месте раньше было отклонение от стандарта или послабления. В GCC работает так:
По 1 и 2: В Target.h в GCC-порте есть строки
Код
namespace OS
{
    void Run();
    class TBaseProcess;
}
По п.3:
Код
namespace OS
{
    template<>
    OS_PROCESS void TProc1::Exec()
    {
         .....
    }
}
Причем эта конструкция в старых ИАРах вызывала ошибки.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 17 2009, 21:52
Сообщение #3


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(Сергей Борщ @ Jul 17 2009, 17:55) *
...
По п.3:
...

Ошибка
Код
Error[Pe793]: explicit specialization of function "OS::process<pr, stack_size>::Exec [with pr=OS::pr0, stack_size=(word)200U]" must precede its first use

wacko.gif

Внимательнее вчитался в текст ошибки и поставил определения объектов процессов
Код
TProc1 Proc1;
TProc2 Proc2;
TProc3 Proc3;
после определения функций Exec() и всё собралось!
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st June 2025 - 14:11
Рейтинг@Mail.ru


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