Всем привет!
Для рисования по точкам определил вот такие структуры:
struct TPoint {
int x;
int y;
};
struct TTrapez {
int n; // trapezoid number
TPoint v[4]; // vertices
};
и затем инициализировал массив:
TTrapez trapez[24] = {
0, { {183,38}, {246,38}, {240,52}, {188,52} }, // green
1, { {250,41}, {294,83}, {279,90}, {244,54} },
2, { {297,88}, {297,150}, {281,143}, {281,96} },
3, { {294,155}, {250,199}, {245,185}, {280,150} },
4, { {246,201}, {183,201}, {188,185}, {240,185} },
5, { {177,199}, {135,156}, {149,149}, {184,185} },
6, { {131,150}, {131,88}, {147,96}, {147,143} },
7, { {135,83}, {177,41}, {184,54}, {149,90} },
8, { {192,59}, {237,59}, {230,74}, {198,74} }, // yellow
9, { {242,62}, {272,93}, {257,98}, {235,76} },
10, { {275,97}, {275,142}, {260,135}, {260,104} },
11, { {272,147}, {242,177}, {236,162}, {257,140} },
12, { {237,180}, {192,180}, {198,165}, {230,165} },
13, { {187,177}, {156,147}, {170,140}, {193,163} },
14, { {153,142}, {153,97}, {168,104}, {168,135} },
15, { {156,92}, {187,62}, {193,76}, {170,99} },
16, { {201,81}, {227,81}, {222,95}, {207,95} }, // red
17, { {232,83}, {250,101}, {236,107}, {226,97} },
18, { {254,106}, {254,133}, {240,127}, {240,112} },
19, { {250,138}, {233,156}, {227,142}, {237,132} },
20, { {227,158}, {201,158}, {206,144}, {222,144} },
21, { {195,156}, {177,138}, {191,132}, {201,142} },
22, { {174,133}, {174,106}, {188,112}, {188,127} },
23, { {177,101}, {196,83}, {203,97}, {192,108} }
};
Так всё работает. И тут я подумал, зачем мне поле “int n; // trapezoid number” в структуре "struct TTrapez ". Всё равно я обращаюсь к элементам массива по индексу.
void drawTrapez(TTrapez t) {
tft.drawLine(t.v[0].x, t.v[0].y, t.v[1].x, t.v[1].y, TFT_WHITE);
tft.drawLine(t.v[1].x, t.v[1].y, t.v[2].x, t.v[2].y, TFT_WHITE);
tft.drawLine(t.v[2].x, t.v[2].y, t.v[3].x, t.v[3].y, TFT_WHITE);
tft.drawLine(t.v[3].x, t.v[3].y, t.v[0].x, t.v[0].y, TFT_WHITE);
}
...
for (int i = 0; i < 24; i++) {
drawTrapez(trapez[i]);
}
Дай, думаю, уберу:
struct TPoint {
int x;
int y;
};
struct TTrapez {
// int n;
TPoint v[4]; // vertices
};
TTrapez trapez[24] = {
{ {183,38}, {246,38}, {240,52}, {188,52} }, // green
{ {250,41}, {294,83}, {279,90}, {244,54} },
{ {297,88}, {297,150}, {281,143}, {281,96} },
{ {294,155}, {250,199}, {245,185}, {280,150} },
{ {246,201}, {183,201}, {188,185}, {240,185} },
{ {177,199}, {135,156}, {149,149}, {184,185} },
{ {131,150}, {131,88}, {147,96}, {147,143} },
{ {135,83}, {177,41}, {184,54}, {149,90} },
{ {192,59}, {237,59}, {230,74}, {198,74} }, // yellow
{ {242,62}, {272,93}, {257,98}, {235,76} },
{ {275,97}, {275,142}, {260,135}, {260,104} },
{ {272,147}, {242,177}, {236,162}, {257,140} },
{ {237,180}, {192,180}, {198,165}, {230,165} },
{ {187,177}, {156,147}, {170,140}, {193,163} },
{ {153,142}, {153,97}, {168,104}, {168,135} },
{ {156,92}, {187,62}, {193,76}, {170,99} },
{ {201,81}, {227,81}, {222,95}, {207,95} }, // red
{ {232,83}, {250,101}, {236,107}, {226,97} },
{ {254,106}, {254,133}, {240,127}, {240,112} },
{ {250,138}, {233,156}, {227,142}, {237,132} },
{ {227,158}, {201,158}, {206,144}, {222,144} },
{ {195,156}, {177,138}, {191,132}, {201,142} },
{ {174,133}, {174,106}, {188,112}, {188,127} },
{ {177,101}, {196,83}, {203,97}, {192,108} }
};
Компилирую. Выдаёт ошибку:
D:\Projects\UWB\TFT\indicator_radar\indicator_radar.ino:41:1: error: too many initializers for 'TTrapez'
41 | };
| ^
exit status 1
Compilation error: too many initializers for 'TTrapez'
Казалось бы, всё просто должно быть. Подскажите, где я обсчитался со скобочками?