[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