реклама на сайте
подробности

 
 
> Ошибка при копировании структур, Почему-то виснет при копировании вложенных структур
kolobochishe
сообщение Oct 20 2014, 10:41
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 14-04-10
Из: Россия, г.Челябинск
Пользователь №: 56 634



Структура типа im_rect является вложенной в структуре im_widget. При создании массива из элементов im_widget внутренняя структура im_rect InnerRect не копируется (прибор виснет при отладке) в случае если элементы im_widget в одном массиве. В Visual Studio все работает, а в Visual DSP виснет. Что делать? И как Вы делаете копирование структур? Читал, что в старых компиляторах на это было ограничение. Можно memcpy или memmove. Но хочется разобраться в таком поведении контроллера.

Код
typedef int_fast16_t im_int;

typedef struct
{
im_int Left;
im_int Top;
im_int Right;
im_int Bottom;
} im_rect;

typedef struct {
im_int Type;
im_rect OuterRect;    
im_rect InnerRect;    
void * Widget;
im_int State;
char * Title;
char * Text;
char * Hint;
pt2Function Function;
void * AddInf;
im_pixel BkPixel;
uchar AutoSize;
pt2Function DrawFunction;
} im_widget;


im_rect TestRect = { 5, 6, 7, 8 };
im_widget wFKey[4];

wFKey[0].InnerRect.Left = 5;

memcpy(&wFKey[1].InnerRect, &wFKey[0].InnerRect, sizeof(im_rect)); // Работает
wFKey[1].InnerRect = wFKey[0].InnerRect; // Виснет
wFKey[1].InnerRect = TestRect; // Работает


Т.е. виснет при копировании вложенных структур внутри массива.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Oct 21 2014, 18:41
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



А вы попробуйте без typedef:
Код
struct im_rect { im_int Left; im_int Top; im_int Right; im_int Bottom; };

struct im_widget {
  im_int Type;
  struct im_rect OuterRect;    
  struct im_rect InnerRect;
  .....
} wFKey[4];

Может, компилятору так больше понравится?
Я сама всегда так пишу, а без typedef только однажды обойтись не смогла.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 06:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01386 секунд с 7
ELECTRONIX ©2004-2016