Спецификация префиксов венгерской нотации




Префикс Тип данных (базовый тип)
  c char
  by BYTE (unsigned char)
  n short int, int
  i int
  x, у short (в качестве координат х и у)
  сx, су short (в качестве длины вдоль координат х и у)
  b BOOL (int)
  w UINT (unsigned int) или WORD (unsigned short int)
  l LONG (long)
  dw DWORD (unsigned long)
  fn Указатель на функцию
  s Строка
  sz, str Строка, завершающаяся нулевым байтом
  lp 32-битовый указатель
  h Дескриптор (используется для обращения к объектам Windows
  msg Сообщение

Именование переменных. При использовании венгерской нотации переменные имеют префиксы, указанные в табл. 2.1. Кроме того, если имя переменной состоит из одного или нескольких слов, то каждое из них записывается с прописной буквы. Вот несколько примеров:

 

char *szFileName; // Строка с завершающим нулем

int *lpiData; // 32-битовый указатель на int

BOOL bSemaphore; // Логическое значение

DWORD dwMaxCount; // 32-битовое беззнаковое целое

 

Хотя специальное обозначение для локальных переменных мне неизвестно, для гло­бальных обычно используется префикс g_ (или просто g):

 

int g_iXPos; // Глобальная позиция по координате х

int g_Timer; // Глобальный таймер

char *g_szString; // Глобальная строка с

// завершающим нулем

Именование функций. Функции именуются так же, как и переменные, но только без префиксов. Другими словами, в именах функций составляющие их слова пишутся с прописных букв, и не бо­лее того.

 

int PlotPixel(int ix, int iy, int ic);

void *MemScan(char *szString);

 

Использование подчеркиваний считается неверным. Например, следующая функция не соответствует венгерской нотации:

 

int Get_Pixel(int ix, int iy);

Именование типов и констант. Имена всех типов и констант состоят только из прописных букв, но при этом Вы мо­жете использовать в именах подчеркивание:

 

const LONG NUM_SECTORS = 100; // Константа в стиле C++

#define MAX_CELLS 64 // Константа в стиле С

#define POWERUNIT 100 // Константа в стиле С

typedef unsigned char UCHAR; // Пользовательский тип

 

Здесь нет ничего необычного – обыкновенные стандартные определения. Хотя большинство программистов Microsoft не используют подчеркивания, предпочтительно пользоваться ими с тем, чтобы имена были более удобочитаемы.

В C++ ключевое слово const имеет несколько значений, но в приведенном выше коде оно использовано просто для создания константной переменной. Этот способ похож на использование макроопределения #define, но при этом содержит информацию о типе. Использование const позволяет, таким образом, обеспечить проверку типов в процессе компиляции и выполнить необходимые преобразования.

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

class CVector

{

public:

CVector() { ix = iy = iz = imagnitude = 0; }

CVector(int x, int y, int z)

{ ix = x; iy = y; iz = z; }

 

...

 

private:

int ix, iy, iz; // Направление вектора int

imagnitude; // Размер вектора

}


Именование параметров. Имена параметров функций следуют тем же соглашениям, что и обычные перемен­ные, хотя это и не обязательно. Например, Вы можете увидеть объявление функции, вы­глядящее так:

 

UCHAR GetPixel(int x, int y);

 

При использовании венгерской нотации это объявление должно выглядеть следую­щим образом:

 

UCHAR GetPixel(int ix, int iy);

 

Кроме того, в объявлении функции имена параметров могут не указываться вовсе – указываются только их типы:

 

UCHAR GetPixel(int, int);

 

Конечно, такое допустимо только в объявлении функции; в определении функции должны использоваться не только типы, но и имена переменных.

Знакомство с венгерской нотацией еще не означает, что Вы в обязательном порядке должны ее использовать. Таким образом, код в этой книге будет использовать венгерскую нотацию при рассмотрении функций Win32 API, но в других местах будем пользоваться собственным стилем.

Программы, приведенные в этой книге, создавались в среде Microsoft Visual C ++ 6.0. Во время работы с книгой, разбирая приведенные примеры, или при создании собственных приложений Вы, вероятно, будете применять какой-либо другой компилятор, кото­рый сможет строить программы для Windows. Демонстрационные программы должны правильно транслироваться любым компилятором, совместимым с Visual C ++. Примеры, приведенные в книге, написаны на стандартном C/C++, так что они должны транслироваться любым компилятором C/C++.

Обычно создается проект типа Win32-Application. В состав «рабочего пространства» (Workspace) проекта (на рис. 1.4 – это проект Ex_02_01) обязательно входят файлы (Sourse Files):

· текст программы с суффиксом.cpp (на рис.1.4 – это текст программы Example-02-01.cpp);

· стандартная библиотека вызовов Windows (на рис.1.4 – это библиотека Comctl32.lib);

· стандартный заголовочный h-файл (на рис. 1.4 – это Windows.h).

 

Как показано на рис. 1.4, первые два файла включаются разработчиком программы в явном виде. Третий файл (Header Files), если на него есть ссылка в тексте программы с помощью макроса

#include <Windows.h>,

который подключается автоматически.

 

 

Рис. 1.4. Типовой состав проекта

 

 




Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-03-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: