Voila j'ai un petit problème de pointeurs, satanés pointeurs!

Ma fonction est la suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
int
give_place (void **stock, const int struct_nbr, const int port)
{
    int i;
 
    /* check all places */
    for (i=0; i < struct_nbr; i++)
        if ((*stock+i)->port == port)
            return (i);
 
    /* port not found */
    return (-1);
}
Cette fonction recherche dans un tableau (stock) de struct_nbr cases le port donné.

Mon problème est le suivant:
Le pointeur *stock peut etre de différents types, i_http, i_ftp...

Ici a la compilation j'ai les 2 erreurs suivantes:
retrosniffMemory.c:40: attention : dereferencing `void *' pointer
retrosniffMemory.c:40: error: void value not ignored as it ought to be

Un parametre que je pourrais passé en plus a la fonction pourrait me permettre de connaitre le type qu'il faut utiliser pour *stock mais je ne vois vraiment pas comment intégrer le changement dynamique du type du pointeur sans faire un switch et réécrire le coeur de la fonction pour chaque type

Si qunlqun a une suggestion

[Balises CODE ajoutées par Anomaly - Merci d'y penser vous-même à l'avenir ]