recuperer le type du parametre (void*)
Salutous :D
Voila j'ai une fonction qui recupere un pointeur void*.
Et je voudrai connaitre le type du pointeur car j'ai deux fonctions qui font la meme chose avec une seule ligne qui change suivant le parametre.
En gros:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
int calcul(long* nb);
int calcul2(float* nb);
// Et je voudrai
int calcul_tout(void* nb)
{
/*code*/
// quelque chose comme:
if(type(nb) == long)
//code
else if(type(nb) == float)
// code
/*code*/
} |
Je sais que c'est possible mais j'arrive pas a retrouver le nom de la fonction sur Internet.
Si quelqu'un la connait
Merci :D
Re: recuperer le type du parametre (void*)
Citation:
Envoyé par kacedda
Voila j'ai une fonction qui recupere un pointeur void*.
Et je voudrai connaitre le type du pointeur
Il n'y a pas de moyens automatiques. C'est une question de spécification.
C'est toi qui dois savoir ce que tu as passé. Si il peut y avoir plusieurs types, il faut organiser les données en une structure contenant un 'selecteur' et une union sur les différents types supportés.
Citation:
car j'ai deux fonctions qui font la meme chose avec une seule ligne qui change suivant le parametre.
En gros:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
int calcul(long* nb);
int calcul2(float* nb);
// Et je voudrai
int calcul_tout(void* nb)
{
/*code*/
// quelque chose comme:
if(type(nb) == long)
//code
else if(type(nb) == float)
// code
/*code*/
} |
Il n'y a pas de constante 'type' en C. mais tu peux en céer une et la passer en parametre :
Code:
1 2 3 4 5 6 7 8 9
|
enum TYP
{
TYP_INT,
TYP_LONG,
TYP_FLOAT,
TYP_DOUBLE,
TYP_nb
}; |
ensuite tu fais le switch qui va bien...
Mais l'expérience montre qu'il vaut mieux n fonctions séparées (quitte à factoriser le code commun)...