Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Структура, Структура Си АВР 
:(
    Опции темы
Alexei
Дата 4.8.2005, 06:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 20.8.2003

Репутация: 4
Всего: 4



Можно ли создав, такую структуру скопировать в нее содержимое int переменной,
если да, то как?
struct{
unsigned nib3:4;
unsigned nib2:4;
unsigned nib1:4;
unsigned nib0:4;
} result;

PM MAIL   Вверх
smalcom
Дата 4.8.2005, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 494
Регистрация: 16.10.2004
Где: Dnepr

Репутация: 4
Всего: 7



Попробуй так

1.
Код

struct _result
{
   unsigned nib3:4;
   unsigned nib2:4;
   unsigned nib1:4;
   unsigned nib0:4;
};
int myint;
_result *result;

   result = (_result*)&myint


2.
Код

struct
{
   unsigned nib3:4;
   unsigned nib2:4;
   unsigned nib1:4;
   unsigned nib0:4;
};
int myint;

   memcpy((void*)&result,  (void*)&myint, sizeof(int));


Это сообщение отредактировал(а) smalcom - 4.8.2005, 10:31


--------------------
What DA F...???
PM MAIL WWW Skype Jabber   Вверх
ManiaK
Дата 4.8.2005, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 2
Всего: 29



А ещё можно так (но это я уже из Си++):
Код

struct{
unsigned nib3:4;
unsigned nib2:4;
unsigned nib1:4;
unsigned nib0:4;
} result;
union {
result res;
int i;
} converter;


Такая подленькая хитрость smile
PM MAIL WWW   Вверх
smalcom
Дата 4.8.2005, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 494
Регистрация: 16.10.2004
Где: Dnepr

Репутация: 4
Всего: 7



Самое простое(возможны очепятки но суть должна быть ясна)

Код

struct
{
   unsigned nib3:4;
   unsigned nib2:4;
   unsigned nib1:4;
   unsigned nib0:4;
} result;
int &myint;

   myint = (int*)&result

//и далее

   myint = bla bla bla



--------------------
What DA F...???
PM MAIL WWW Skype Jabber   Вверх
Metal_Heart
Дата 5.8.2005, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


Профиль
Группа: Участник
Сообщений: 728
Регистрация: 31.3.2005
Где: Москва

Репутация: 1
Всего: 12



Кроме вышеперечисленного ManiaK-ом и smalcom-ом хочу добавить, что размер структуры должен совпадать с размером int, иначе могут вылезнти некоторые неприятности


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
Alexei
Дата 6.8.2005, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 20.8.2003

Репутация: 4
Всего: 4



memcpy - работает.
ManiaK -а не пробовал.
А это , что-то не понял:
Код

int myint;    
_result *result;    
   result = (_result*)&myint

и
это
Код

int &myint;    
   myint = (int*)&result


PM MAIL   Вверх
ManiaK
Дата 6.8.2005, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 2
Всего: 29



В Си нет строгой проверки типов. Поэтому ты можешь создать объект любого типа и сослать на него указатель. Вот тебе преобразование struct test в int.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.1272 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.