NEW 5 years ago
You will probably see more clearly when you read this article:
Tu y verras sans doute + clair en lisant cet article :
NEW 5 years ago
Merci.
Petite question concernant les appels de fichiers.
Depuis un fichier initial.INO j'appelle un fichier secondaire.INO par le code "secondaire();".
Depuis secondaire.INO je souhaite retourner, sous certaines conditions, après la ligne d'appel du fichier dans initial.INO.
Dois-je utiliser un simple "return;" ?
Steph
5 years ago
Pour les fichiers .ino
le processus est différent : en fait l'IDE Arduino concatène tous les fichiers .ino
qu'il trouve dans le répertoire de ton projet (tous ceux qui sont situés au même niveau que ton croquis (sketch) principal). Tout se passe donc comme s'il compilait un seul et même fichier construit en mettant bout à bout tous tes fichiers .ino
. Donc si ton croquis principal appelle une fonction située dans un croquis secondaire... aucun problème : tu n'as besoin de te soucier de rien.
Par ailleurs, le flux de contrôle de ton programme reprendra tout seul à la ligne qui suit ton appel de fonction (qu'elle retourne un résultat ou non).
NEW 5 years ago
Pour les fichiers .ino
le processus est différent : en fait l'IDE Arduino concatène tous les fichiers .ino
qu'il trouve dans le répertoire de ton projet (tous ceux qui sont situés au même niveau que ton croquis (sketch) principal). Tout se passe donc comme s'il compilait un seul et même fichier construit en mettant bout à bout tous tes fichiers .ino
. Donc si ton croquis principal appelle une fonction située dans un croquis secondaire... aucun problème : tu n'as besoin de te soucier de rien.
Par ailleurs, le flux de contrôle de ton programme reprendra tout seul à la ligne qui suit ton appel de fonction (qu'elle retourne un résultat ou non).
NEW 5 years ago
D'accord, merci pour les explications.
Sauf que là il ne s'agit pas de fonctions.
Dans mon croquis principal LAST-DEFENDER.INO, j'ai un appel vers enemy();
Dans le croquis enemy.INO j'ai :
lignes de code;
char u = 0;
while (tab_en[3][en_turn] == 5 and u != 4) {
if (en_turn == 4) en_turn=1; else en_turn++;
u++; }
if (u == 4) "retourner à la ligne suivant l'appel enemy(); de LAST-DEFENDER.INO" ; // comment faire ?
lignes de code;
Bien qu'il est conseillé de ne pas employer GOTO, si je souhaitais l'utiliser, cela fonctionnerait-il donc en mettant un label après enemy(); dans LAST-DEFENDER.INO et un GOTO après mon "if (u == 4)" dans enemy.INO ? Ou bien faut-il tout de même avoir le label et le goto dans le même fichier ?
clement
5 years ago
en fait si tu est bien dans une fonction. si je comprend bien ton code tu as :
principal.ino
// tout un tas de code // le init // le loop // au bout d un moment un appel as une fonction secondaire //ici tu n appelle pas ton deuxième fichier mais bien la fonction secondaire secondaire(); // encore du code a executer
puis tu as un fichier secondaire.ino
void secondaire() { // un tas de code // au bout d un moment je veux sortir de secondaire if(foo == bar) { return; } // si foo == bar le code plus bas ne sera pas executer on sort de la fonction }
Pour faciliter la lecture de ton code je te conseil de ne pas faire de return dans le corp d une methode et aucun dans des method void
exemple
int maMethod() { // je retourne un resulta = 0 par default int resultat = 0; // pas trop de ligne de code sinon ca devient illisible // a parement il peux se passer quelque chose de fou if(quelqueChodeDeFou > 10) { resultat = 20; } // toujours pas trop de ligne de code, cette methode fait trop de chose a mon gout // enfin je fait un seul return return resultat; }
++
NEW 5 years ago
en fait si tu est bien dans une fonction. si je comprend bien ton code tu as :
principal.ino
// tout un tas de code // le init // le loop // au bout d un moment un appel as une fonction secondaire //ici tu n appelle pas ton deuxième fichier mais bien la fonction secondaire secondaire(); // encore du code a executer
puis tu as un fichier secondaire.ino
void secondaire() { // un tas de code // au bout d un moment je veux sortir de secondaire if(foo == bar) { return; } // si foo == bar le code plus bas ne sera pas executer on sort de la fonction }
Pour faciliter la lecture de ton code je te conseil de ne pas faire de return dans le corp d une methode et aucun dans des method void
exemple
int maMethod() { // je retourne un resulta = 0 par default int resultat = 0; // pas trop de ligne de code sinon ca devient illisible // a parement il peux se passer quelque chose de fou if(quelqueChodeDeFou > 10) { resultat = 20; } // toujours pas trop de ligne de code, cette methode fait trop de chose a mon gout // enfin je fait un seul return return resultat; }
++