C/Visual C - Error de compilacion

 
Vista:

Error de compilacion

Publicado por Aritz (1 intervención) el 18/01/2007 10:16:10
Soy nuevo en la programacion en C, y tengo un problema con unos punteros (creo que al principio es normal, todos mis compañeros lo tienen...) la cosa es que tengo una estructura anidada dentro de otra, a la que llamo mediante un puntero: la estructuras son las siguientes:
//Variable_t
typedef struct
{
Estado_t estado;
signed long valorEnt;
char *valorString;
char *idVariable;
char *name;
} Valor_t;

typedef struct
{
long mtype;
Valor_t valor;
}Variable_t;

//MensajePeticion_t
typedef struct
{
Orden_t orden;
char *idVariable;
int valorEnt;
char *valorString;
} Peticion_t;

typedef struct
{
long mtype;
Peticion_t p;
} MensajePeticion_t;

Y la funcion que me da error es la siguiente:

void EscribirValor(MensajePeticion_t *peticion, Variable_t *resultado)
{
//En la siguiente frase me dice: error: request for member `p' in something not a structure or union
//Este error se repite en todas las igualdades
switch (peticion.p->idVariable)
{
case "codVal":
{
//codigo es una Variable_t definida en la cabecera
codigo.valor->valorString = peticion.p->valorString;
resultado.valor.estado = RESPUESTA_OK;
break;
}
case "date":
{
fecha.valor->valorString = peticion.p->valorString;
resultado.valor.estado = RESPUESTA_OK;
break;
}
default:
{
resultado.valor.estado = DESTINO_INALCANZABLE;
break;
}
}
}

He estado buscando la solucion al error, en manuales de C y en google, pero no he encontrado nada para mi problema en concreto. Para obtener un valor de un puntero no se usa el símbolo '->'? Porque me que p no es algo de la estructura? Que estoy haciendo mal?

Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error de compilacion

Publicado por Tom (619 intervenciones) el 18/01/2007 11:41:37
Bueno, pues una cosa es tener problemas con los punteros, y otra no conocer la sintaxis de C.

peticion->p
otra vez
peticion->p
de nuevo
peticion->p
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error de compilacion

Publicado por Fran (122 intervenciones) el 18/01/2007 19:23:25
claro, fijate q el puntero es peticion, por lo cual para llamar a algo tenes q hacer
peticion->p pero p es una estructura NO un puntero a estructura, por lo q cuando llamas a por ej idVariable lo tenes q hacer con ".", mas precisamente esta linea en tu programa

switch (peticion.p->idVariable)

se traduce a switch(peticion->p.idVariable),

la verdad q tu codigo es medio desastrozo, pero dont worry, comienzos... un consejo, definir TIPOS en partes apartes, aka si las estructuras estuviesen en otro archivo como tipos y modificadores de ese tipo, seria todo mas simple, LEE manuales completos, ese manejo de punteros ahi da cuenta q o no leiste nada o no leiste bien el manual (o mas raro el manual esta mal :-P)... arma todo en tu cabeza bien y separa modularmente todo antes de llevarlo al tipeo. SUerte!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar