Se connecter avec
S'enregistrer | Connectez-vous

une fonction C selon type de paramètre

Dernière réponse : dans Programmation

salut;

j'aimerai créer une petite librairie pour manipuler les bits des entiers 8, 16 et 32 bits.

j'aimerais pas créer des fonctions pour chaque type. J'ai essayé de déclarer la même fonction en changeant le type de paramètres et ça marche pas (changer la signature en jargon).

y a t il un moyen en C pour prendre en compte le type de paramètres et faire le calcul adéquat ?

Merci

p.s. j'utilise GCC

Autres pages sur : fonction type parametre

Lassé par la pub ? Créez un compte
Expert Programmation

Eeeeeeeeeeeet non.

Le truc idéal pour toi ça serait les templates du C++. mais c'est du C++, pas du C :) 

En C tu est obligé de recréer tout tes types de manière modulaire, genre comme des structures qui contiennent un nombre de bit et un tableau de char.


ou sinon si tu te sent l'âme d'un bourrin, alors il est possible de faire ce que tu veux en bourrinant avec le préprocesseur.

batchy a dit :
Eeeeeeeeeeeet non.

Le truc idéal pour toi ça serait les templates du C++. mais c'est du C++, pas du C :) 

En C tu est obligé de recréer tout tes types de manière modulaire, genre comme des structures qui contiennent un nombre de bit et un tableau de char.


ou sinon si tu te sent l'âme d'un bourrin, alors il est possible de faire ce que tu veux en bourrinant avec le préprocesseur.


j'ai meilleur temps à écrire toutes les fonctions.

Y a un moyen qui retourne le type d'un paramètre dans une fonction ?

Expert Programmation

Non. :( 

Proposition de prototype :
unsigned long fonction_sur_les_bits(int nombre_bits, unsigned long operande1, unsigned long operande2)

Ensuite, tu peux faire des macros :

#define fonction_sur_16_bits(n1, n2) fonction_sur_les_bits(16, n1, n2)
#define fonction_sur_32_bits(n1, n2) fonction_sur_les_bits(32, n1, n2)

zeb a dit :
Non. :( 

Proposition de prototype :
unsigned long fonction_sur_les_bits(int nombre_bits, unsigned long operande1, unsigned long operande2)

Ensuite, tu peux faire des macros :

#define fonction_sur_16_bits(n1, n2) fonction_sur_les_bits(16, n1, n2)
#define fonction_sur_32_bits(n1, n2) fonction_sur_les_bits(32, n1, n2)

Bonne idée, vais essayer ça.

Et un truc du genre

  1. void* fonction_sur_les_bits(int nb_bits, void *op1, void *op2)


Ca obligerait à faire les reservations de ram à la main avec des malloc etc mais au moins ça serait vraiment universel ... du moins AMHA.

(bon apres je peux me tromper, ça fait longtemps que je n'ai pas pratiqué ce genre de bricolage :) )
Lassé par la pub ? Créez un compte