Можно ли написать функцию без ";" в конце?
Я видел в Интернете следующий код:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(8,9);
void setup()
{
mySerial.begin(9600);
Serial.begin(9600);
delay(100);
}
void loop()
{
if (Serial.available()>0)
mySerial.write(Serial.read());
if (mySerial.available()>0)
Serial.write(mySerial.read());
}
Команда работает отлично. Как можно было в коде написать команду без ";" в конце строки?
Ссылка на код: введите описание ссылки здесь
@Асмир Абдимажитов, 👍-1
Обсуждение1 ответ
Лучший ответ:
Вы имеете в виду этот блок?
if (Serial.available()>0) <- here
mySerial.write(Serial.read());
if (mySerial.available()>0) <- here
Serial.write(mySerial.read());
Если да, то есть ;
в конце каждой команды. Команды просто разделены на две строки каждая. Это можно было бы написать так:
if (Serial.available()>0) mySerial.write(Serial.read());
if (mySerial.available()>0) Serial.write(mySerial.read());
Вторая и четвертая строки — это тело if
. Лучше использовать отступы с исходным расположением:
if (Serial.available()>0)
mySerial.write(Serial.read());
if (mySerial.available()>0)
Serial.write(mySerial.read());
Или еще лучше добавьте скобки вокруг тела:
if (Serial.available()>0) {
mySerial.write(Serial.read());
}
if (mySerial.available()>0) {
Serial.write(mySerial.read());
}
Это означает, что нам разрешено пренебрегать {} и () для условий, верно? Но почему иногда возникают ошибки, если я не пишу эти символы?, @Асмир Абдимажитов
Вы можете опустить скобки, если в теле if есть только один оператор., @Majenko
Условное выражение или выражение цикла, например if или while, управляет следующим оператором или блоком. Ему не нужна собственная точка с запятой, поскольку это не полный оператор. Блок — это один или несколько операторов, окруженных символами «{» и «}», и он рассматривается как оператор. Итак, следующий простой оператор заканчивается символом ';' или блок, окруженный '{', '}', является необходимой частью 'if' или ' while'., @JRobert
- Почему я получаю ошибку "SendCommand не был объявлен"
- Ошибка: expected unqualified-id before 'if'
- Ошибка компиляции кода для Arduino/Genuino Uno
- Ошибка : заблудиться '\' в программе
- Ошибка: invalid application of 'sizeof' to incomplete type 'int []' при попытке вычислить размер массива в библиотеке
- Недопустимое преобразование из 'char' в 'const char*' [-fpermissive] в строке
- Ошибка компиляции в nodeMCU вместе с датчиком температуры oneWire ds18b20 и ЖК-дисплеем 2x16 (не I2C)
- Ошибка компиляции: "cannot declare 'client' to be of abstract type 'Client'"
пройти курс программирования или прочитать книгу о C или C++, @Juraj