1

Je signale que je code au passage dans un cyber. je n'ai pas de PC ni de TI pour installer et tester ces instructions.
Merci de votre aide.


Voici 3 fonctions pour changer le type des pointeurs.
Je les sauves dans un tableau de pointeurs sur fonctions pour une utilisation par indexation.
char *my_char( char *srce ) 
{
  return( srce )
}

short *my_short( char *srce ) 
{
  return( (short *)srce )
}

long *my_long( char *srce ) 
{
  return( (long *)srce )
}

// Tableau de pointeur sur fonctions retournant des pointeurs
void *(*my_ptr[3])()={ my_char, my_short, my_long };



Ce code ci-dessous est sense retourne un resultat qui peut etre soit char, short, long.
index_ptr = (nbr_byte+2)/2 -1;
*(my_ptr[ index_ptr ] )(srce)


je ne pense pas que mon code soit bon.
il me semble qu'il faut encore un cast de plus car mon code doit retourner un 'void *'.


2

qu'est-ce que c'est que ce truc, tu peux pas typecaster tout simplement ? :/
explique un peu ce que tu veux vraiment obtenir parcequ'entre les 3 fonctions qui ne font rien, les pointeurs sur fonction qui sont invalides et tes void * qui ne sortent de nulle part, ton but est assez flou là.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

3

il s'agit de lire dans une variable soit en utilisant un pointeur char *, short *, long*.
j'ai pense faire ca en une seule fonction.( je commence a croire que c'est pas faisable )
J'appelle la fonction approprie a partir des pointeurs sur fonction contenu dans le tableau 'my_ptr' pour transforme le pointeur char *srce en un autre type. mais a priori , ca marche pas. ca va toujour me ramenner un void *.



Je voulais juste etre sur qu'il n'y avait pas moyen de regrouper ca en un seul code.


Ok Merci Zephir, je vais faire ca simplement.

4

ns est fausse, c'est :void *(*my_ptr[3])(char *)={ my_char, my_short, my_long };La déclaration de ton tableau de pointeurs sur des fonctio
Mais au final, ça ne changera d'utiliser ça puisque c'est le type de retour de ton tableau de fonctions qui importe, et ce type est 'void *', donc tes transtypages ne servent à rien, tu ne pourras pas déréférencer le résultat.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

5

Sa déclaration n'était pas "fausse", ça aurait probablement marché quand même, c'est juste encore plus dangereux puisqu'il n'a même pas précisé les paramètres de sa fonction donc elle aurait accepté n'importe quoi.

Mais si tu expliquais pourquoi tu veux "convertir" (il n'y a aucune conversion pour passer de char * à short * ou long *) tes pointeurs, peut-être qu'on pourrait t'indiquer une autre méthode ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

6

ok merci les gars. j'ai compris.

Comme le dit Sasume, je voulais juste dereferencer le resutat. je vais faire ca dans uu swith case.