Категории
Самые читаемые
onlinekniga.com » Компьютеры и Интернет » Программирование » Программирование для карманных компьютеров - Владимир Волков

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

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

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 38 39 40 41 42 43 44 45 46 ... 102
Перейти на страницу:

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

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

type-specifier <bitfield-id>: width;

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

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

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

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

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

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

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

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

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

Листинг 4.12

//Блок 18

void f6(){

mm[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->en»);

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

strcat(mm, nn);

strcat(mm, « – mystr.dn»);

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

strcat(mm, nn);

strcat(mm, « – mystr.sn»);

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.mybitn»);

mbstowcs(mstr, mm, 256);

szStr = mstr;

}

Этот код будет выполняться при нажатии клавиши 6 на клавиатуре.

Объединения

Объединение объявляется при помощи ключевого слова union. Объединения очень похожи на структуры, и главное их отличие от структур заключается в том, что разработчик может пользоваться только одним из членов объединения в конкретный момент времени. Практически мы можем трактовать объединение как своего рода объект с переключающимся типом или переменную типа variant. В тот момент, когда одному из членов объединения присваивается значение, остальные члены объединения содержат непредсказуемые значения и обращаться к ним не стоит. Результат этого действия нельзя будет предсказать.

Но это не означает, что каждый раз результат будет неверным. Просто память для объединения выделяется по размеру его большего члена и далее для членов объединения распределяется динамически при каждом присваивании только для того члена, которому присваивается значение, внутри одного и того же участка памяти. Значение остальных членов не гарантированно. Оно может сохраниться, а может и перезаписаться новым значением.

Среда разработки eMbedded Visual C++ 3.0

Несмотря на то, что среда eVC предназначена для разработки программ для «маленьких» компьютеров, сама среда – вполне серьезный инструмент. Знакомство со средой стоит начать со структуры экрана.

РћРєРЅР°

Главное окно среды представляет собой окно в стиле SDI, когда все прочие документы и окна открываются в главном окне и не могут покинуть его пределы. Таким образом, главное окно является контейнером для других окон. На нем размещены панель инструментов и главное меню (рис. 4.1).

Рис. 4.1. Главное окно среды.

Остальные окна могут быть выведены на экран или скрыты в зависимости от режима работы. Основным рабочим окном является окно Workspace (рис. 4.2).

Рис. 4.2. Окно Workspace со всеми вкладками.

В окне Workspase может находиться от одной до трех вкладок. Если был создан проект, то в окне Workspase появится вкладка FileView. Если в проекте есть классы, то будет добавлена вкладка ClassView, а если к проекту подключены какие-то ресурсы, то вкладка ResourceView незамедлительно объявится внизу окна. Каждая из вкладок отображает структуры файлов, классов и ресурсов, включенных в проект, в виде дерева с раскрывающимися узлами. Щелчок на узле приводит к его раскрытию, а двойной щелчок на конечном элементе – к открытию данного элемента для редактирования. Если щелкнуть на имени файла в окне FileView, то этот файл будет открыт в окне редактора кода. При щелчке на имени класса в окне ClassView, на экран будет выведен файл, в котором объявлен данный класс. Двойной щелчок на одном из имен ресурсов приведет к открытию данного ресурса в соответствующем ему редакторе ресурсов. Таким образом, взаимодействие с окном Workspace может повлечь за собой появление множества окон редакторов разного типа.

Окно Output (рис. 4.3) отображает информацию на выходе того или иного режима работы среды.

1 ... 38 39 40 41 42 43 44 45 46 ... 102
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Программирование для карманных компьютеров - Владимир Волков.
Комментарии