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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Указатели на функции
vet
сообщение Jun 26 2006, 18:12
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Вероятно, дело в чем-то другом.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Jun 26 2006, 18:19
Сообщение #17


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

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата
И напоследок вопрос, который интересует меня:
__root __flash const struct token token_table[]
зачем в этой строке стоит "struct" ?


Дык описываю массив структур типа token
Там выше описана структура
struct token
{
const char __flash *str;
void (*fun)(void);
};
Иначе это было-бы описание простого типа (например через typedef) с именем token.
По крайней мере так IAR не ругается smile.gif
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jun 26 2006, 18:26
Сообщение #18


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Я вот тоже думаю, что дело в чём-то другом. А чтобы точно определиться нужно всего-лишь скомпилить прогу (желательно без nop'ов), заархивировать все листинги и дать посмотреть. То бишь прикрепить к посту. Тогда станет ясно, кто виноват.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
_Bill
сообщение Jun 27 2006, 10:41
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(ArtemKAD @ Jun 26 2006, 19:37) *
/* Обработчик "OK" */
void fun_OK(void)
{
if(error_cnt)

error_cnt --;
(*fun_OK_addr)(); // Запуск обработчика по указателю ????????
asm("nop"); // Лекарство от зависания sad.gif !!!
return;
}

Странно все это. Почему не просто вызвать функцию? Для чего такой наворот?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 27 2006, 12:25
Сообщение #20


Гуру
******

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



Цитата(ArtemKAD @ Jun 26 2006, 19:37) *
Примерно так:
// Структура таблицы ключевых слов
Проблема явно где-то в другом месте, потому что у меня следующий код работает во множестве процессоров без всяких выравниваний уже лет пять:
Код
void SetHex(void) { // пример функции
    BASE=16;
}


typedef struct {
    char Name[10];
    void (*Action)(void);
} tDictionary;

tDictionary __flash Dictionary[] = {
    { "HEX",    SetHex},
    { "DECIMAL",    DECIMAL },
    { ".",        DOT },
    { "@",        Reference },
    { "!",        Dereference },
    { "SP.",    stackdump },
    {"LOOK",    LOOK },
    {"DUMP",    DUMP },
    {0, 0}    // end of dictionary
};



static tDictionary __flash *LP;

    for ( LP = Dictionary; LP->Action !=NULL; LP++ ) {    // seach word
        if ( strcmp_P(token,LP->Name) == 0 ) break;
    }

    if ( LP->Action != NULL) // execute if token was found
        LP->Action();
    else   // else seach digit
        if (!pushDigit(token)) {                        //  !!! can't interpret
            static __flash char str[] = " is undefined";
            ErrMes(str,token); break;
        }


Сообщение отредактировал Сергей Борщ - Jun 27 2006, 12:26


--------------------
На любой вопрос даю любой ответ
"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
ArtemKAD
сообщение Jun 27 2006, 20:29
Сообщение #21


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

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Точно - в другом месте wink.gif . А вставка лишнего nop-а перед вызываемой функцией благотворно влияет на карму Меги168 (она видать очень любит четные CALL-ы) поэтому она благополучно не замечает того другого ошибочного места.
IAR-овцы тоже ошиблись когда патч на релиз выкладывали - у них всегда константные исполнимые вектора везде великолепно работали...

"Доктор, не делайте из меня эйдиота" smile.gif .
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 25th August 2025 - 03:29
Рейтинг@Mail.ru


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