|
CodeVisionAVR работа со структурами |
|
|
|
 |
Ответов
|
Dec 15 2011, 02:04
|
Частый гость
 
Группа: Участник
Сообщений: 165
Регистрация: 12-08-08
Из: Омск
Пользователь №: 39 557

|
Не буду создавать новую тему. Какая-то фигня в codevision со структурами. Поднял давнишний проект, написанный в версии 1.25.5. Надо немного исправить его, ну думаю сделаю в версии 2.05. Задал 2 безымянных структуры: Код eeprom struct { unsigned char cc_l[3], cc_r[3], cc_low, pc_l[4], pc_r[4], pc_low; } ecommand;
flash struct { // дефолтные значения unsigned char cc_l[3], cc_r[3], cc_low, pc_l[4], pc_r[4], pc_low; } fcommand так вот в версии 1.25 строка типа ecommand = fcommand; корректно присваивает все значения всем переменным структуры, а в версии 2.05 - ругается и не компилируется. Почему?
|
|
|
|
|
Dec 15 2011, 02:56
|
Местный
  
Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023

|
Цитата(sch @ Dec 15 2011, 05:04)  Задал 2 безымянных структуры: так вот в версии 1.25 строка типа ecommand = fcommand; корректно присваивает Странно что работает с безымянными структурами. А так будет работать? Код struct X { unsigned char cc_l[3], cc_r[3], cc_low, pc_l[4], pc_r[4], pc_low; };
eeprom X ecommand; flash X fcommand;
|
|
|
|
|
Dec 15 2011, 03:49
|
Частый гость
 
Группа: Участник
Сообщений: 165
Регистрация: 12-08-08
Из: Омск
Пользователь №: 39 557

|
Цитата(maksimp @ Dec 15 2011, 08:56)  Странно что работает с безымянными структурами.
А так будет работать? А что странного? Разобрался, так как вы привели не работает, зато заработало вот так: Код struct X { unsigned char cc_l[3], cc_r[3], cc_low, pc_l[4], pc_r[4], pc_low; };
struct X eeprom ecommand; struct X flash fcommand; Спасибо за наводку. Кстати, никакого уменьшения объема кода не заметил: в старой версии codevision прошивка была 3031 слов, в новой 2.05, с учетом вышеприведенных исправлений - 3061 слово.
Сообщение отредактировал sch - Dec 15 2011, 11:22
|
|
|
|
|
Dec 15 2011, 10:40
|
Местный
  
Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023

|
Цитата(sch @ Dec 15 2011, 06:49)  А что странного? Вроде структуры с одинаковым содержимым не считаются принадлежащими к одному типу, если по разному называются. Вот пример из Windows: В winnt.h Код #define DECLARE_HANDLE(n) typedef struct n##__{int i;}*n В windef.h Код DECLARE_HANDLE(HBITMAP); DECLARE_HANDLE(HBRUSH); И HBITMAP и HBRUSH - указатели на структуры их одного целого числа, но присваивать их друг другу нельзя. Специально для этого это всё и накручено.
|
|
|
|
Сообщений в этой теме
Станис CodeVisionAVR работа со структурами Nov 22 2010, 16:48 ReAl Дежавю како-то...
Ну про union понятно, если CodeV... Nov 22 2010, 17:48 Станис Цитата(ReAl @ Nov 22 2010, 23:48) Дежавю ... Nov 22 2010, 17:59 WHALE Цитата(ReAl @ Nov 22 2010, 20:48) Дежавю ... Nov 23 2010, 05:45  ReAl Цитата(WHALE @ Nov 23 2010, 07:45) Все он... Nov 23 2010, 09:21 alexeyv я обычно делал так:
Кодtypedef union Type____{
uns... Nov 23 2010, 03:49 SasaVitebsk Цитата(alexeyv @ Nov 23 2010, 07:49) И ни... Nov 23 2010, 06:34 alexeyv Цитатаа что с указателями будут преобразования? Те... Nov 24 2010, 03:50 Сергей Борщ QUOTE (sch @ Dec 15 2011, 04:04) ругается... Dec 15 2011, 07:38 sch Цитата(Сергей Борщ @ Dec 15 2011, 13:38) ... Dec 15 2011, 11:20 Сергей Борщ QUOTE (sch @ Dec 15 2011, 13:20) Вообще н... Dec 15 2011, 14:35  sch Цитата(Сергей Борщ @ Dec 15 2011, 20:35) ... Dec 16 2011, 02:31
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|