EDIT : Synthèse des réponses :
Si les deux fonctions n'ont pas le même nombre d'arguments ou des arguments de types différents alors le compilateur décide d'utiliser la fonction qui correspond a l'appel.
Si les deux fonctions ont le même nombre d'argument ET de même type alors le compilateur génère une erreur.
----------------------------------------------------------------------------------------------------------------------------------------
Message original
Je passe directement à un exemple :
IDE : arduino (debian testing version dans les dépots 1.0-> pas le choix et pas envie d'utiliser une version non estampillée Debian)
fonction réécrite : shiftOut()
J'ai ré-écrit la fonction en la simplifiant et en la rendant plus véloce ( utilisation directe des registres).
Peut importe si la fonction n'est pas universelle du moment qu'elle est strictement adaptée à mon besoin qui est de commander un afficheurs 7 segments + DP avec un registre à décalage.
Que se passe-t-il si je l'ajoute dans mon programme ?
-> L'IDE l'ignore
-> Cela crée un conflit bloquant
-> Pour l'IDE c'est la fonction du programme qui sera prioritaire et donc celle de la bibliothèque sera ignorée ?
void shiftOut( uint8_t chiffre)
{
uint8_t i ;
uint8_t segments ; // variable intermédiaire, pas nécessaire mais code plus facile à relire
for (i=0 ; i < 8 ; i++)
{
segments = !!(chiffre & ( 1 << (7-i)));
if (segments == 1) PORTB |= _BV(DATA) ;
if (segments == 0) PORTB &= ~_BV(DATA) ;
PORTB |= _BV(HORLOGE) ;
delay(1);
PORTB &= ~_BV(HORLOGE) ;
}
}
J'accepte volontiers toutes critiques constructives.