[C con Clase] [Bulk] Duda sobre uniones

Juan Pablo San Martín coyotedemon en gmail.com
Lun Mayo 28 17:01:26 CEST 2007


David:

 

                Te agradezco la respuesta, pero es más que eso lo que
quiero. Imaginemos esto:

 

struct do_record { 

struct do_hdr hdr; 

union { 

union wf_srcrds wf_rcrd;

union ph_srcrds ph_rcrd;

byte data[1450]; 

} rcrd; 

};

union ph_srcrds { byte ph_subrec[5 * sizeof(struct dri_phdb)]; };

 

struct dri_phdb { 

                dword time; 

  union { 

struct basic_phdb basic; 

struct ext1_phdb ext1; 

struct ext2_phdb ext2; 

struct ext3_phdb ext3; 

} 

physdata; byte marker; 

byte reserved; 

word cl_drilvl_subt; 

};

 

struct basic_phdb { 

struct abc_group abc; 

};

 

struct ecg_group { 

short a; 

short b;

 };

 

Y yo defino una variable XYZ de tipo do_record

 

do_record *XYZ;

 

Existe una función cualquiera que me retorna valores a la variable XYZ,
entonces si sigo las definiciones anteriores, podré llegar a los valores de
las variables a y b. Y en eso me pierdo, sobretodo cuando estoy en la parte
de ph_rcrd.

 

Gracias

 

De: cconclase-bounces en listas.conclase.net
[mailto:cconclase-bounces en listas.conclase.net] En nombre de David
Enviado el: Lunes, 28 de Mayo de 2007 10:09 a.m.
Para: 'Lista de correo sobre C y C++'
Asunto: Re: [C con Clase] [Bulk] Duda sobre uniones

 

Hola Juan Pablo, no se si te he entendido bien pero si lo que quieres es
acceder a ‘a y b’ primero tienes que definir una variable de esa estructura:

 

De esta manera:

 

struct ecg_group { 

short a; 

short b;

 } variable;                   //  ‘variable’ es un tipo definido de la
estructura ‘ecg_group’

 

variable.a = 25;             // ‘a’ contiene el numero 25.

 

short x = variable.a;      // x tendra lo que le hayas asignado a la
variable ‘a’, o sea 25.

 

o de esta otra forma:

 

struct ecg_group { 

short a; 

short b;

 };                                // definición de la estructura.

 

typedef ecg_group variable;      // definir un tipo de esa estructura.

 

variable.a = 25;                         // Usar la variable de un tipo
definido de la estructura en cuestion.

 

Bueno, no se si te referias a esto o que.

Ten en cuenta que una estructura se define como un bloque de datos que seran
asignados a la variable que definas de ese tipo de estructura.

Para usar ese bloque de datos tienes que crear una variable de ese tipo de
estructura.

 

Espero haberte ayudado.

 

 

 

  _____  

De: cconclase-bounces en listas.conclase.net
[mailto:cconclase-bounces en listas.conclase.net] En nombre de Juan Pablo San
Martín
Enviado el: lunes, 28 de mayo de 2007 14:47
Para: Lista de correo sobre C y C++
Asunto: [Bulk] [C con Clase] Duda sobre uniones

 

Estimados:

 

                Me entregaron el siguiente código para revisar, y la verdad
es que me que quedan unas dudas.  Tengo las siguientes estructuras y
uniones:

 

struct do_record { 

struct do_hdr hdr; 

union { 

union wf_srcrds wf_rcrd;

union ph_srcrds ph_rcrd;

byte data[1450]; 

} rcrd; 

};

union ph_srcrds { byte ph_subrec[5 * sizeof(struct dri_phdb)]; };

 

struct dri_phdb { 

                dword time; 

  union { 

struct basic_phdb basic; 

struct ext1_phdb ext1; 

struct ext2_phdb ext2; 

struct ext3_phdb ext3; 

} 

physdata; byte marker; 

byte reserved; 

word cl_drilvl_subt; 

};

 

struct basic_phdb { 

struct abc_group abc; 

};

 

struct ecg_group { 

short a; 

short b;

 };

 

                Lo que necesito es poder leer a y b, pero no se como acceder
a ellos (me pierdo en ph_rcrd). Alguna ayuda?

 

 

De antemano, gracias.

 

 

Juan Pablo

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20070528/70ff5022/attachment.html>


Más información sobre la lista de distribución Cconclase