Boucle while sans { }

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour à tous ! =)

Je viens de recevoir un module ESP8266. Ce module permet d'avoir une connexion wifi à travers une voie série, et se configure avec des commandes AT.

J'ai donc cherché le code le plus simple, que voici :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
void setup() {
  Serial.begin(9600);
  Serial3.begin(9600); // ESP8266
}

void loop() {
  while( Serial3.available() ) Serial.write( Serial3.read() );
  while( Serial.available() ) Serial3.write( Serial.read() );

}

Il fonctionne très bien, et me permet d'envoyer des commande AT depuis le moniteur série de l'IDE arduino vers le port série du ESP8266 et inversement.

Sauf que je comprend pas comment il arrive à fonctionner car il n'y a pas de { } aux boucles while. Quelqu'un peut m'éclairer ?

Merci =)

Édité par thib

+0 -0

Cette réponse a aidé l'auteur du sujet

Bonsoir,

Tu n'as qu'une instruction après ton while, les accolades sont donc optionnelles. C'est la grammaire du C qui le permet, donc normal que ça compile.

It's harder to crack a prejudice than an atom. | Le mieux est l’ennemi du bien.

+0 -0

Cette réponse a aidé l'auteur du sujet

Merci !

Il faudrait peut être ajouter cette notion dans le tuto arduino.

thib

Je ne l'ai pas mise volontairement, pour apprendre des bonnes pratiques et éviter les codes trop obscures de la part des lecteurs :D

Sinon en re ecvrivant le bout de code plus proprement et sans les accolades ca ferait :

1
2
3
4
5
6
7
8
void loop() {
  while( Serial3.available() )
     Serial.write( Serial3.read() );

  while( Serial.available() )
     Serial3.write( Serial.read() );

}

ZdS, le best du Zeste ! Tuto Arduino, blog, etc

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte