Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Sergio66 Гость
|
Добавлено: Вт Сен 09 2003 16:52 Заголовок сообщения: Преобразование типов |
|
|
Имеются несколько структур, содержащих один и тот же набор элементов, но в разных последовательностях. ({x,y,z};{y,x,z};{z,y,x},...). Каким образом в С (традиционном) можно организовать такой доступ к элементам этих структур, чтобы в левой части идентификатора структуры указать некую переменную, которая бы определяла тип требуемой в данный момент структуры. Т.е., при различных условиях данные интерпретируются по разному (разные типы структур) нужно, чтобы не при каждом обращении к элементу структуры выставлять преобразователь типа, а, проверив условие, установить некую переменную в нужный тип и с ее помощью (в левой части идентификатора) добираться до нужных элементов структур. Буду признателен за совет. |
|
Вернуться к началу |
|
|
grayrat
Зарегистрирован: 30.06.2003 Сообщения: 189
|
Добавлено: Вт Сен 09 2003 17:28 Заголовок сообщения: Re: Преобразование типов |
|
|
Пиши на С++ ! на чистом С корявее выходит. Я драйвера на плюсах писал, и ничего, до сих пор пользуются
#include <stdio.h>
enum Styp { typ1, typ2, typ3 };
struct S1 { int a; }; struct S2 { char b; }; struct S3 { double c; };
struct hameleon {    int typ;    union    {   &nbs p  S1 s1;      S2 s2;      S3 s3;    }; };
void main() {   hameleon h = {typ3};
  switch( h.typ )   {     case( typ1 ): { S1 &s = h.s1; s.a = 15; printf("%d\n", s.a); }; break;     case( typ2 ): { S2 &s = h.s2; s.b = 15; printf("%c\n", s.b); }; break;     case( typ3 ): { S3 &s = h.s3; s.c = 15.5; printf("%g\n", s.c); }; break;   } } |
|
Вернуться к началу |
|
|
Sergio66 Гость
|
Добавлено: Вт Сен 09 2003 17:44 Заголовок сообщения: Re: Преобразование типов |
|
|
К сожалению, на С++ не могу, я пишу на кросс средствах. На обычном С можно сотворить? |
|
Вернуться к началу |
|
|
Sergio66 Гость
|
Добавлено: Вт Сен 09 2003 17:45 Заголовок сообщения: Re: Нужно на традиционном С |
|
|
На С++ не могу, пишу на кросс средствах. |
|
Вернуться к началу |
|
|
Sergio66 Гость
|
Добавлено: Ср Сен 10 2003 11:57 Заголовок сообщения: Re: Преобразование типов |
|
|
Все равно, на каждый тип структуры требуется свой блок обработки, т.к. видимость s ограниченв блоком case. А нужно, чтобы блок обработки был один - универсальный для всех типов структур, т.к. правые части идентификаторов переменных - полей структур в моем случае одинаковы. |
|
Вернуться к началу |
|
|
grayrat
Зарегистрирован: 30.06.2003 Сообщения: 189
|
Добавлено: Чт Сен 11 2003 10:52 Заголовок сообщения: Re: Преобразование типов |
|
|
Честно говоря, я нихрена не понял вопрос. Напиши как ты себе это представляешь в виде кода на воображаемом языке, а потом подумаем как это подогнать под С. И с комментариями !!! |
|
Вернуться к началу |
|
|
|