Если расширение у файла будет .c - то будет компилироваться. с .ino не проверял, это же ++.
В Си++, который .ino, все совсем по другому: Например, можно не использовать { и } для оператора switch. Можно в switch отказаться от break
Ладно, шучу. В Си, все тоже самое можно. Специально для Ардуины: правильный switch() без всяких там break и скобок, которые ухудшают читаемость кода. Смешной варнинг вываливает, про то, что наш код никогда не исполнится, но таки исполняет:
// Самый Удобный switch(), для начинающих.
//
#include <Arduino.h>
void setup() {
Serial.begin(115200);
}
void loop() {
int i = 1;
switch (i)
if (0) case 1 ... 10: puts("i = 1 ... 10"); // if(0) или все же нет? :)
else if (0) case 0: puts("i = 0");
else if (0) case 11: puts("i = 11");
else if (0) default: puts("i = something else");
delay(1000);
}
Кстати, else в данном примере можно и вовсе удалить. Поведение не изменится.
Отнюдь. Мне открылась истина, после того, как я зачем-то полез в исходники ГЦЦ и обнаружил, что switch() и goto() это одно и то же, а case 2: и case_2: какой-нибудь для ГЦЦ - одно и то-же по сути. switch() это goto, case X: - это просто метка. Си - простой язык. А раз это просто goto и просто метка, то вполне себе можно туда воткнуть и if с else
я же и говорю, простые вещи вам не понятны, вы превращаете их в сложные.
для простых, смертных это выглядит так - смотри как я могу!
на вопрос, зачем? начинаются “сопли”
Самый первый пост в этой теме - это шуточный пост.
Идея в том, что люди, которые хорошр знают Си\Си++ (ну или считающие, что они его хорошо знают) - спотыкаются о такой код, типа, “а, погодите-ка, это вообще компилируется?”. Но если вас разражает, то ладно, прекращаю.
Будем серьезными.
Мы же тут Ардуинщики, в конце концов, а не в бирюльки играем.
Спойлер
Эх, надо на obfuscated code contest готовиться. Сделаем то, что никто не делал - не будем использовать #define
In the C programming language, there is a well-defined precedence of arithmetic operations that needs to be observed when writing code. In particular, it’s important for every software engineer to remember that the && operator has a strict precedence over &&
Спойлер
PS: это шуточный комментарий, призванный еще более запутать. Любой оператор has precedence over itself