[C con Clase] tipo estructurado algo complejo
Susana Sacie
susanitis en gmail.com
Vie Sep 11 11:47:34 CEST 2009
hola, pues vereis, estoy trabando con el siguiente tipo estructurado pero no
logro entender su estructura, a ver si me la podeis describir:
struct mrtd_handle {
int dgpresent;
struct {
int (*transceive)(struct mrtd_handle *h, //este es el mismo tipo
estructurado que estoy declarando
unsigned char *sbuf, unsigned int slen,
unsigned char *rbuf, unsigned int *rlen);
} fn;
};
y lo que no entiendo es el uso que hago de este tipo, os pongo una funcion y
llamadas que usan este tipo:
void llamada (struct mrtd_handle *h){
int a;
unsigned char cmd[5] = { 0x00, 0x84, 0x00, 0x00, 0x00 };
unsigned char retbuf[256+2];
unsigned int retlen = sizeof(retbuf);
*a=h->fn.transceive(h, cmd, 5, retbuf, &retlen); *//parece como si fuese una
función, incluso pasa retlen
//por referencia para que la modifique
if (a<0) {// ahora analiza el valor de a, yo pienso que este valor habrá
sido almacenado antes ya que
// la variable h es usada por otra funcion antes de pasarla a
la funcion llamada.
return a;
}
return 0;
}
y despues por ejemplo tengo una función con una serie de parametros:
static int librfid(struct mrtd_handle *h , const unsigned char *cmd,
unsigned int len, unsigned char *resp, unsigned int *rlen); //esta funcion
devuelve un entero en funcion de los parametros que se le pasan
y ahora de repente hago la siguiente llamada en otra función:
struct mrtd_handle *h;
*h->fn.transceive = librfid*; //¿ porque se puede llamar a librfid sin
pasarle ningun parametro?
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090911/71b255cf/attachment.html>
Más información sobre la lista de distribución Cconclase