Bonjour,
Le problème que j'ai est récurent, mais je vais partir d'un exemple. Supposons que je vienne d'écrire une fonction pour faire avancer un moteur pas à pas dont le prototype est le suivant:
avance(uint16_t nombreDePas, boolean direction, uint16_t vitesse, uint8_t numeroDuMoteur);
Pour moi, c'est clair, pas besoin de rajouter un commentaire. Mais complètement ailleurs j'appelle cette fonction:
avance(5, 1, 10, 3);
En relisant je ne sais plus ce que veulent dire ces chiffres.
Pour la direction, c'est facile, je définis d'une manière ou d'une autre (define ou struct) le mot SENS_POSITIF. Je peux faire pareil avec les moteurs, je n'en ai qu'un petit nombre. Cela devient:
avance(5, SENS_POSITIF, 10, MOTEUR_3);
Mais je ne peux pas faire pareil pour la vitesse et le nombre de pas.
J'ai essayé:
uint16_t vitesse, nbPas; // Variables poubelles, le contenu n'est jamais utilisé. Définies que pour le nom
et du coup, je peux écrire:
avance(vitesse=5, SENS_POSITIF, nbPas=10, MOTEUR_3);
J'affecte 5 à vitesse mais aussi le résultat au bon paramètre. Je peux aussi écrire
avance(/vitesse=/ 5, SENS_POSITIF, /nbPas=/ 10, MOTEUR_3);
D'un point de vue programmation, c'est bon, mais c'est plus difficile à lire
J'ai imaginé définir vitesse par
#define vitesse 0+
#define nbPas 0+
ce qui permet d'écrire
avance(vitesse 5, SENS_POSITIF, nbPas 10, MOTEUR_3);
Mais il faut absolument qu'il n'y ait pas quelque part une variable locale de même nom
Quelle est la solution pour vitesse et nbPas?