bonjour,

je souhaite créer une table d'indirection pour une fonction dont un paramètre peut être en 16 ou 32 bits !

je m'explique; dans un fichier "fic1.c" j'ai un ensemble d'éléments qui appellent des fonctions définies dans "fic2.c".

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
   if ( 1 < param1 < n)   { fic2_fonction1 (u8 param1, u16 *param2) }
   if ( n <= param1 < N) { fic2_fonction2 (u8 param1, u32 *param2) }
mais moi après param2 je le cast pour le récupérer que sur 16 bits.

moi, dans mon fichier "fic1" je veux me détacher des fonctions "fic2". donc je crée une table d'indirection :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
  typedef struct {
    u8 index;
    void (* pointeurfonction)(u8, ??????????);
  } Tableconfig;
 
  const Tableconfig TableIndirection[ N ] =
  {
    { index1     ,fic1_fonction1},   
    { index2     ,fic1_fonction1}, 
    { index3     ,fic1_fonction2}, 
    ...
  };
et ça me permet ensuite de rendre àa parametrable :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
  #define fic1_fonction1 fic2_fonction1
  #define fic1_fonction2 fic2_fonction2
=> donc comment je peux gérer le paramètre sur 16 ou 32 bits, sachant que moi je récuppère que la valeur sur 16 bits ?

=> avez vous une autre idée pour faire cela (autre façon de faire la table d'indirection, fonctions callback) ?

merci d'avance