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
и в объявление функции и в объявлении переменных