ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
4 июля
105383 Топик полностью
ReAl (20.11.2007 10:35, просмотров: 64) ответил Anabios на Правильно, все так и делаеться, только как описать указатель, который мог бы указывать в одном случае на один флеш массив описанный через сложный тип, а в другом на другой сложный тип, при чем поля у них не совсем совпадают
навскидку, что-то в духе #define HEADER \ uint8_t type;\ void *ptr; enum { OBJA, OBJB }; typedef void (*pvoidfunc_t)(); typedef struct header_t { HEADER; }; typedef struct obj_a { // next будет опять указатель на какой-то obj_* HEADER; char *text; uint8_t x, y; }; typedef struct obj_b { // next будет указатель на функцию HEADER; char *text; }; void process( header_t *p) { switch( p->type) { case OBJA: { obj_a *pobj = (obj_a *)p; ... if( selected) { process( (header_t *)(p->next) ); } } break; case OBJB: { obj_b *pobj = (obj_b *)p; ... if( selected) { ((pvoidfunc_t)(p->next))(); } } break; } }