Emmanuel Delahaye C is a sharp tool | niemad a écrit :
J utilise la meme fonction avec des types differents en entree, genre:
Code :
- void ma_fonction_float(float **tab);
- void ma_fonction_int(int **tab);
|
Y aurait pas une astuce pour eviter de devoir creer des fonction differente a chaque fois?
|
Non, à moins d'écrire du code générique avec l'interface suivante (à-la-qsort()) :
void f (void *tab, size_t size_elem, size_t nb_x, size_t ,nb_y); |
qui permet de traiter les elements d'un tableau quelquonque linéaire à deux dimensions. Dans la fonction, on travaille en bytes, et on calcule les indices avec les dimensions. Les affectations se font à coup de memcpy(). Par contre, étant donné qu'on ne sait pas la nature des données du tableau, on ne peut faire ausun calcul sur les données. Mias, (comme avec qsort()), ce calcul peut être délégué à une fonction utilisateur (callback).
/* type du callback (adresse et coordonnees courantes...) */
typedef int scan_data_f (void *p_data, size_t x, size_t y);
void f (void *tab, size_t size_elem, size_t nb_x, size_t ,nb_y, scan_data_f *pf_calcul);
|
---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
|