Как раз на это я и нарвался, когда задавал вопрос: Новый редактор для создания пользовательских блоков.Phazz писал(а): 05 фев 2023, 10:10 Это все прекрасно, пока одна такая функция. Или не добавят другой блок с таким же лайфаком)
Лайфхаки (Маленькие хитрости) А так можно было?!
Лайфхаки (Маленькие хитрости) А так можно было?!
- Dryundel
- Полковник
- Сообщения: 2405
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 15 раз
Лайфхаки (Маленькие хитрости) А так можно было?!
К сожалению привести пример уже не могу, так как переписал свой ПБ с учётом этого лайфхака, а старые версии ПБ уже удалил за ненадобностью.
Но смысл донес [ref=#808080]Phazz[/ref], когда в предыдущую функцию без "}", залетает последующая функция без "}". Таким образом последующая функция встраивается в тело предыдущей. Соответственно loop последующую функцию не видит и компилятор обижается.
Если необходимо, могу быстренько на коленке накидать эти ПБ, но с Вашим опытом работы в FLProg наверно этого не требуется.
Отправлено спустя 34 минуты 50 секунд:
P.S. Два ПБ с функциями: Func1 () и Func2 ()
[spoiler]
void setup()
{
}
void loop()
{
//Плата:1
Func1 ();
Func2 ();
}
bool _isTimer(unsigned long startTime, unsigned long period)
{
unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime)
{
return (currentTime>=(startTime + period));
}
else
{
return (currentTime >=(4294967295-startTime+period));
}
}
void Func1 ()
{
// Func1 ()
void Func2 ()
{
// Func2 ()
}
}
Компилятор:
'Func2' was not declared in this scope
[/spoiler]
- Dryundel
- Полковник
- Сообщения: 2405
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 15 раз
Лайфхаки (Маленькие хитрости) А так можно было?!
А где блоки то?
И в чем идея? Что во что Вы пытались встраивать? Для чего? Какие задачи стоят?
На сколько я помню Вы и пытались функцию в функцию запихать. Я Вам сказал, что так нельзя, а можно лишь вызывать одну из другой.
Лайфхаки (Маленькие хитрости) А так можно было?!
Вся эта масса частных вопросов не имеет никакого отношения к обсуждаемой теме.Dryundel писал(а): 05 фев 2023, 14:13 И в чем идея? Что во что Вы пытались встраивать? Для чего? Какие задачи стоят?
[ref=#808080]Phazz[/ref], написал, что фокус с открытой фигурной скобкой в ПБ работает в том случае, если в скетче используется только один такой ПБ. Если их используется два и больше, то фокус не прокатывает, так как получается матрёшка: функция в функции, в функции, в функции... И я согласен с этим утверждением. Это не идея и не задача. Это уточнение для тех, кто захочет воспользоваться этим лайфхаком. В частности я воспользовался ПБ от [ref]artemka19[/ref], при этом у меня в скетче уже был свой ПБ с открытой скобкой. В результате поимел головняк, пока разбирался с кодом на 30-ти страницах, почему IDE не видит явно описанную функцию.
Но если у Вас есть иной опыт использования несколько разных "ПБ с открытой скобкой", с удовольствием у Вас поучусь.
Вы не совсем верно помните. "Запихать" функцию в функцию нет никаких проблем. Я спрашивал о том, был ли у кого опыт вставки кода из "функции каждого экземпляра" в "функцию общего блока". Но я эту проблему решил, правда накладными расходами в виде избыточного кода, так как "ПБ без скобки" в скетче уже был от другого разработчика.Dryundel писал(а): 05 фев 2023, 14:13 На сколько я помню Вы и пытались функцию в функцию запихать. Я Вам сказал, что так нельзя, а можно лишь вызывать одну из другой.
Ниже прикреплён пример с тремя такими блоками. Пример дан в качестве иллюстрации для подтверждения моих слов.
Допускаю, что у меня слишком мало опыта в написании ПБ. Приведите свой рабочий пример, где используется два и больше "ПБ без } в функции".
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя