Russian Qt Forum

Программирование => С/C++ => Тема начата: Student2011 от Май 11, 2011, 14:20



Название: Как правильно описать C++Struct в программе...
Отправлено: Student2011 от Май 11, 2011, 14:20
Здравствуйте. Я новичок в С++, у меня вот появился вопрос...

В программе необходимо описать структуру С++ с 10 полями. 
1) Суммарно все поля структуры должны хранить 32 бит информации,
2) Под каждое поле должно быть зарезервировано определенное количество бит,
3) Все поля структуры целочисленные - integer и неотрицательные - unsigned.

Т.е. само описание структуры будет выглядеть примерно так....

struct ParamF
{
  unsigned int TimeOut;   //5 бит
  unsigned int IteracF;   //1 бит
  unsigned int param1;   //3 бит
  unsigned int param2;   //3 бит
  unsigned int param3;   //3 бит
  unsigned int param4;        //3 бит
  unsigned int param5;   //3 бит
  unsigned int param6;        //3 бит
  unsigned int param7;   //3 бит
  unsigned int ResultF;   //5 бит
};

вопрос в том, как указать в описании структуры, что под каждое поле зарезервировано определенное количество бит.

Из того, что я знаю по С++, мне известен только способ выделения памяти под переменную с помощью оператора NEW

например         int *param1 = new int(3);

но это можно сделать только динамически, насколько я понимаю, внутри функций/процедур,

а мне нужно определить количество байт для каждого параметра имененно в описании структуры, статически.


Подскажите, пожалуйста, есть способ уже в описании структуры описать сколько бит заразервировано под каждый параметр структуры?
Может будет лучше работать не с типом int, а с типом char, который неверное больше подходит для хранения битовых данных? Но и под char непонятно как статически выделить определенной количестов бит.


Название: Re: Как правильно описать C++Struct в программе...
Отправлено: brankovic от Май 11, 2011, 14:34
Код:
struct ParamF
{
  unsigned int TimeOut  : 5;
  unsigned int IteracF  : 1;
  unsigned int param1   : 3;
  ...
};


Название: Re: Как правильно описать C++Struct в программе...
Отправлено: Student2011 от Май 11, 2011, 15:01
Спасибо.