Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

перенос

1 view
Skip to first unread message

Evgeniy Zhavoronkov

unread,
Jun 4, 2007, 9:18:56 AM6/4/07
to
Привет All!

Как это написать на Си? Hачинаются проблемы когда пытаюсь засунуть switch.

type
PPack = ^Pack;
Pack = packed record
cursor : word;
length : word;
case integer of
0: (DATA:array[0..PACKET_DATA_SIZE-1] of byte);
1: (FLAP : FLAP_HDR;
FLAP_BODY:array[0..PACKET_DATA_SIZE-1] of byte);
2: (Sign,ChID:byte; SEQ,Len:word);
3: (fix:FLAP_HDR;
SNAC:SNAC_HDR;
SNAC_BODY:array[0..PACKET_DATA_SIZE-1] of byte);
end;


До свидания, Evgeniy.
np: Amatory - Клетка[paused]
[Metal] [Death] [Doom] [Guitar] [Animate] [C++] [asm]

Alexander Andrusenko

unread,
Jun 4, 2007, 12:18:15 PM6/4/07
to
> Как это написать на Си? Hачинаются проблемы когда пытаюсь
> засунуть switch.
> type
> Pack = packed record
> case integer of
[skip]
> end;

Попробуй засунуть не switch, а union.


Soldatenkov Mitea

unread,
Jun 4, 2007, 11:58:38 AM6/4/07
to
Привет, Evgeniy Zhavoronkov!
Ты вроде писал(а) в эху RU.CPP.CHAINIK следуюшее:
EZ> Как это написать на Си? Hачинаются проблемы когда пытаюсь засунуть
EZ> switch.
Поля надо объединять через union. Только, я так и не нашел, как его заставить
работать с группами полей - придется группу в отдельную структуру закатывать.

Evgeniy Zhavoronkov

unread,
Jun 4, 2007, 3:22:24 PM6/4/07
to
Привет Soldatenkov!

04 июн 07 20:58, Soldatenkov Mitea -> Evgeniy Zhavoronkov:


EZ>> Как это написать на Си? Hачинаются проблемы когда пытаюсь

EZ>> засунуть switch.
SM> Поля надо объединять через union. Только, я так и не нашел, как его
SM> заставить работать с группами полей - придется группу в отдельную
SM> структуру закатывать.
можешь привести пример? :)


До свидания, Evgeniy.
np: Enigma - Sadeness (Meditation)

Evgeniy Zhavoronkov

unread,
Jun 4, 2007, 3:21:54 PM6/4/07
to
Привет Alexander!

04 июн 07 20:18, Alexander Andrusenko -> Evgeniy Zhavoronkov:


>> Как это написать на Си? Hачинаются проблемы когда пытаюсь

>> засунуть switch.
>> type
>> Pack = packed record
>> case integer of

AA> [skip]
>> end;
AA> Попробуй засунуть не switch, а union.
А как? :)

Soldatenkov Mitea

unread,
Jun 5, 2007, 4:16:21 AM6/5/07
to
Привет, Evgeniy Zhavoronkov!
Ты вроде писал(а) в эху RU.CPP.CHAINIK следуюшее:
SM>> Поля надо объединять через union. Только, я так и не нашел, как его
SM>> заставить работать с группами полей - придется группу в отдельную
SM>> структуру закатывать.
EZ> можешь привести пример? :)
struct MyStruct
{
int x;
double y;
struct Group1Struct
{
double mas[3];
char c;
};
struct Group2Struct
{
char Name[100];
int size;
};
union
{
Group1Struct Group1;
Group2Struct Group2;
short c;
};
};
Все что внутри union, идет по одному адресу. Подозреваю, что возможны грабли
при наличии конструкторов у объектов в union.

0 new messages