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

 
 
> Битовые поля и указатели
sidy
сообщение Jan 28 2016, 11:36
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 280
Регистрация: 2-11-08
Пользователь №: 41 333



Всем добра. Достался в наследие чужой код. Необходимо его привести в удобо-варимый вид. Есть куски, которые повторяются по несколько раз, только с разными переменными. Хотел заменить эти места функциями, но вот проблема, используются переменные в виде структур с битовыми полями типа: system.onoff и не получаются по указателю передать такие переменные в функцию, поскольку у структур адрес имеется, а у битового поля его нет. Вопрос как обычно поступают в таких случаях?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sidy
сообщение Feb 3 2016, 16:11
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 280
Регистрация: 2-11-08
Пользователь №: 41 333



Раньше была структура с битовыми полями
и чтобы изменить в ней бит накладывалась маска.
struct{
enable1 :1;
enable2 :1;
enable3 :1;
enable4 :1;
enable5 :1;
enable6 :1;
enable7 :1;
enable8 :1;

disable1 :1;
disable2 :1:
disable3 :1:
disable4 :1:
disable5 :1:
disable6 :1:
disable7 :1:
disable8 :1:
} blockcontrol;

Теперь необходимо использовать массив структур из битовых
полей:
struct{
enable :1;
disable :1;
} blockcontrol[8];

поэтому возник вопрос как теперь накладывать маску что изменить,
например бит blockcontrol[5].enable?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 3 2016, 16:56
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sidy @ Feb 3 2016, 18:11) *
Раньше была структура с битовыми полями
и чтобы изменить в ней бит накладывалась маска.

Какая такая маска??? Вы вообще о чем?



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
CrimsonPig
сообщение Feb 3 2016, 17:04
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 329
Регистрация: 23-04-14
Пользователь №: 81 502



Цитата(zltigo @ Feb 3 2016, 16:56) *
Какая такая маска??? Вы вообще о чем?


Да эти дятлы, небось делали следущее:

CODE


blockcontrol control;

((uint16)control) |= 0x00010002;

if(control.enable5)
{...}

Go to the top of the page
 
+Quote Post
sidy
сообщение Feb 3 2016, 17:21
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 280
Регистрация: 2-11-08
Пользователь №: 41 333



Цитата(CrimsonPig @ Feb 3 2016, 20:04) *
Да эти дятлы, небось делали следущее:

CODE


blockcontrol control;

((uint16)control) |= 0x00010002;

if(control.enable5)
{...}


Да было сделано примерно так. Вот теперь разгребаю, мучаюсь...
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 16:13
Рейтинг@Mail.ru


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