Цитата(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