Arduino не умеет работать со с Struct?

alucard
Offline
Зарегистрирован: 08.04.2013

Вот часть кода:

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
"
Хотя структуры объявлены.
Snubist
Offline
Зарегистрирован: 18.02.2013

Ну раз он говорит что не обьявлены, значит понимает что такое структура, вопрос где вы их обьявили?

alucard
Offline
Зарегистрирован: 08.04.2013

Объявил в самом верху скетча. (Не в функции)

step962
Offline
Зарегистрирован: 23.05.2011

У вас в объявлениях нет типа данных "AABB", есть объявление типа данных "struct AABB".

То же самое относится к объявлению типа данных "struct Point".

Поэтому перепишите объявление функции так:

boolean ScanCollision(struct AABB &a, struct AABB &b, struct Point &mt) 

От части ошибок компиляции избавитесь.

Snubist
Offline
Зарегистрирован: 18.02.2013

Не сталкивался сам, но похоже структуры нужно обьявляде в хеадере.

alucard
Offline
Зарегистрирован: 08.04.2013

Спасибо, все скомпилировалось. 

Но это как-то странно. Я взял C++ код от туда -http://www.cyberforum.ru/post3638696.html - Там без struct...

step962
Offline
Зарегистрирован: 23.05.2011

Ключевая фраза по ссылке "Попробую по памяти накидать:". Т.е. чел дал схему решения.

Кстати, если не хочется употреблять это жуткое слово struct, то почитайте о typedef.

vlkam
Offline
Зарегистрирован: 17.02.2013

Спасибо, помогло добавление везде ключевого слова struct

и в объявление функции и в объявлении переменных