[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