prototypage de fonction - C - Programmation
Marsh Posté le 14-04-2005 à 03:36:37
Tu peux toujours passer un void ** plus, d'une manière ou d'une autre, une info sur le type pointé. Est-ce que c'est mieux qu'une fonction par type ? C'est toi qui vois suivant ce que tu veux faire.
Ou sinon, tu passes au C++.
Marsh Posté le 14-04-2005 à 07:47:24
niemad a écrit : Petite question:
|
void ma_fonction (void **tab, char type) |
Marsh Posté le 14-04-2005 à 08:03:30
tu as le vaarg sinon. pense printf() qui prend n'importe quelle liste..google=> va_list
Marsh Posté le 14-04-2005 à 08:11:45
niemad a écrit : J utilise la meme fonction avec des types differents en entree, genre:
|
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).
|
Marsh Posté le 14-04-2005 à 11:57:52
Merci a tous.
J avais effectivement pas pense a utilise le type void Ca va me servir dans certaine fonction deja ca c est sure.
Marsh Posté le 14-04-2005 à 12:27:22
niemad a écrit : Merci a tous. |
Pas "void", "void **" (ou à la rigueur "void *" dans un cadre plus général...)
Marsh Posté le 14-04-2005 à 13:11:17
Sve@r a écrit : Pas "void", "void **" (ou à la rigueur "void *" dans un cadre plus général...) |
Ouaip c est ce que je voulais dire, j ai juste eu la flemme de mettre les **
Marsh Posté le 14-04-2005 à 13:16:21
tout ça c'est bien joli, mais par rapport à du template ou de la surcharge C++, en termes de performance ... c'est catastrophique
Marsh Posté le 14-04-2005 à 13:30:41
C'est pas la performance qui me gêne, c'est la simplicité d'écriture... Mais bon c'est du C, avec ses avantages et ses limitations...
Marsh Posté le 14-04-2005 à 02:03:13
Petite question:
J utilise la meme fonction avec des types differents en entree, genre:
Y aurait pas une astuce pour eviter de devoir creer des fonction differente a chaque fois?
Le cast ne marche pas puisque j ai un pointeur de pointeur... et passer des int** a ma_fonction_float donne un desastre puisqu il s attend a lire des info de la taille float et non pas int!
A part creer une fonction par type de variable passe y a t il un moyen?