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
//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


0