hola, pues vereis, estoy trabando con el siguiente tipo estructurado pero no logro entender su estructura, a ver si me la podeis describir:<br><br>struct mrtd_handle {<br>int dgpresent;<br>struct {<br>        int (*transceive)(struct mrtd_handle *h, //este es el mismo tipo estructurado que estoy declarando<br>
                  unsigned char *sbuf, unsigned int slen,<br>                  unsigned char *rbuf, unsigned int *rlen);<br>          } fn;<br>};<br><br>y lo que no entiendo es el uso que hago de este tipo, os pongo una funcion y llamadas que usan este tipo:<br>
<br>void llamada (struct mrtd_handle *h){<br>int a;<br>unsigned char cmd[5] = { 0x00, 0x84, 0x00, 0x00, 0x00 };<br>unsigned char retbuf[256+2];<br>unsigned int retlen = sizeof(retbuf);<br><br><b>a=h->fn.transceive(h, cmd, 5, retbuf, &retlen); </b>//parece como si fuese una función, incluso pasa retlen<br>
                                                                                //por referencia para que la modifique<br> if (a<0) {// ahora analiza el valor de a, yo pienso que este valor habrá sido almacenado antes ya que <br>
              // la variable h es usada por otra funcion antes de pasarla a la funcion llamada.       <br>    return a;<br> }<br><br>return 0;<br>}<br><br>y despues por ejemplo tengo una función con una serie de parametros:<br>
<br>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<br><br>y ahora de repente hago la siguiente llamada en otra función:<br>
struct mrtd_handle *h;<br><b>h->fn.transceive = librfid</b>;     //¿ porque se puede llamar a librfid sin pasarle ningun parametro?<br>