Читаем Программирование для карманных компьютеров полностью

Оператор typedef можно использовать и для именованной структуры, если согласно логике программы в этом есть какой-то смысл.

Внутри скобок для объявления членов структуры используется стандартный синтаксис для объявления соответствующих типов. При этом структура не может иметь в качестве своего члена объект того же типа, что и сама структура, но указатель на такой объект может быть членом структуры. Членом структуры в C++ может быть функция.

Битовые поля структур Битовые поля это определенное количество именованных или не именованных битов, которое является членом структуры (объединения, класса). Объявляется битовое поле следующим образом:

type-specifier : width;

В С++ спецификатором типа может быть любое беззнаковое целое.

Объявив битовое поле в структуре, к нему можно обращаться, как к любому другому члену структуры, пользуясь операторами доступа «точка» и «стрелка».

Пользуясь битовыми полями, необходимо учитывать несколько факторов, которые перечислены в следующем списке.

? Код, содержащий битовые поля, не всегда можно перенести на другие платформы, поскольку организация битов в байте и байтов в слове может быть разной в отдельных архитектурах.

? Доступ к битовому полю х при помощи выражения вроде mystruct.x корректен, а получение адреса & mystruct.x невозможно в принципе, поскольку mystruct.x не хранится в байте.

? Битовые поля принимаются для того, чтобы упаковать данные так, чтобы они занимали меньше места. Но для работы с битовыми полями компилятор генерирует дополнительный код, что приводит не только к увеличению размера, но и к замедлению работы программы.

В следующем примере будет объявлена структура, членами которой являются указатель на эту структуру, функция и битовое поле.

Упражнение 4.1 (продолжение)

21. Добавить новый блок в основную рабочую последовательность, код которого приведен в листинге 4.12.

Листинг 4.12

//Блок 18

void f6(){

mm[0] = \0;

struct mystruct {

int d;

double e;

unsigned short mybit: 2;

mystruct* s;

int myfunc(int g)

{return g*g;};} mystr;

mystruct* pmy = &mystr

mystr.s = pmy;

mystr.d = 100;

pmy->e = 300.00;

mystr.mybit = 3;

sprintf(nn,"%f", pmy->e);

strcat(mm, nn);

strcat(mm, « – pmy->e\n»);

sprintf(nn,"%d", mystr.d);

strcat(mm, nn);

strcat(mm, « – mystr.d\n»);

sprintf(nn,"%p", mystr.s);

strcat(mm, nn);

strcat(mm, « – mystr.s\n»);

sprintf(nn,"%d", mystr.myfunc(12));

strcat(mm, nn);

strcat(mm, « – mystr.myfunc(12)\n»);

sprintf(nn,"%d", pmy->myfunc(12));

strcat(mm, nn);

strcat(mm, « – pmy->myfunc(12)\n»);

sprintf(nn,"%d", mystr.mybit);

strcat(mm, nn);

strcat(mm, « – mystr.mybit\n»);

mbstowcs(mstr, mm, 256);

szStr = mstr;

}

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных