0 голосов
Подскажите пожалуйста при переходе на сабж случилось:

design:
void setup{}
void loop
{
task1 {};
task2{};
}
void task1{}
void task2{}

platformio send error: task1 (&task2) was not declared in this scope

как исправить эту ошибку? Заранее благодарен
how to fix the error
(23 баллов) 3 5
Что за ужас с синтаксисом?!

2 Ответы

+2 голосов
 
Лучший ответ

Подобное компилироваться не будет:

void func{}

Создавайте функции так:

void func() {}

А для их вызова в других функциях:

func();

Ваш код будет выглядеть так:

void setup() {}
void loop()
{
  task1();
  task2();
}
void task1() {}
void task2() {}

(1.6 тыс. баллов) 3 9 33
выбран
Они так и выглядит (здесь торопился ошибся) в ардуино ide компилируется в платформио нет. Понимаю что в платформио что то подкрутить надо
Попробуйте перед использованием функции добавить ее определение. То есть перед loop добавьте: void task1();

Так же можно переместить реализацию самой функции над loop (или любым другим участком кода, где она будет использоваться), должно заработать. (при этом добавлять определение функции, как было выше сказано, не нужно)
Спасибо огромное! Скомпилировалось и запустилось! Детский однако глючек.
Вот именно, потому что некоторые компиляторы не ищут вызванную функцию по всему коду.
+2 голосов
Попробуйте объявить функции до их вызова, то есть до loop().
(3.1 тыс. баллов) 14 20 41
Получилось void loop; в конец воткнул в самый. Спасибо огромное.
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.

    За этот месяц ещё никого.

    ...