Arduino не умеет работать со с Struct?
- Войдите на сайт для отправки комментариев
Пнд, 08/04/2013 - 15:58
Вот часть кода:
struct Point { int x; int y; }; Point VectorForce; struct AABB { Point c; byte r[2]; }; //......................... //............Код............................ //...................... boolean ScanCollision(AABB &a, AABB &b, Point &mt) { int rcx = module (a.c.x - b.c.x); int rx = (a.r[0] + b.r[0]); if (rcx > rx) return false; int rcy = module (a.c.y - b.c.y); int ry = (a.r[1] + b.r[1]); if (rcy > ry) return false; int overlap_x = rcx - rx; int overlap_y = rcy - ry; mt.x = 0; mt.y = 0; if (overlap_x < overlap_y) { mt.x = overlap_x; if (a.c.x < b.c.x) { mt.x = -mt.x; } } else { mt.y = overlap_y; if (a.c.y < b.c.y) { mt.y = -mt.y; } } return true; }
Компилятор говорит: "
core:82: error: 'AABB' was not declared in this scope
core:82: error: 'AABB' was not declared in this scope
core:82: error: 'Point' was not declared in this scope
"
Хотя структуры объявлены.
Ну раз он говорит что не обьявлены, значит понимает что такое структура, вопрос где вы их обьявили?
Объявил в самом верху скетча. (Не в функции)
У вас в объявлениях нет типа данных "AABB", есть объявление типа данных "struct AABB".
То же самое относится к объявлению типа данных "struct Point".
Поэтому перепишите объявление функции так:
От части ошибок компиляции избавитесь.
Не сталкивался сам, но похоже структуры нужно обьявляде в хеадере.
Спасибо, все скомпилировалось.
Но это как-то странно. Я взял C++ код от туда -http://www.cyberforum.ru/post3638696.html - Там без struct...
Ключевая фраза по ссылке "Попробую по памяти накидать:". Т.е. чел дал схему решения.
Кстати, если не хочется употреблять это жуткое слово struct, то почитайте о typedef.
Спасибо, помогло добавление везде ключевого слова struct
и в объявление функции и в объявлении переменных