Глава 5. Соглашения об именах и комментариях______________________779

Как видно из этих трех примеров, если вы в курсе, что f в венгерской нотации символизирует флаг, то комментарии, описывающие эти переменные, становятся совершенно излишними — их имена сами себя комментируют.

Указатели на функции

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

int (*fnAdd)(int, int);

Дескрипторы

Как мы видели в примере с GlobalAlloc, для дескрипторов применяется префикс h. Например, чтобы освободить некоторую область глобальной динамической памяти, идентифицируемую дескриптором hGlobal, напишите

GiobalFree(hGlobal);

Индексы массивов

Индекс массива обозначается через i. Чтобы в массиве

char rgchName[80]; // символьный массив имен

изменить регистр всех букв на верхний, создайте цикл

for (int ichCurrent = 0; ichCurrent < 80; ichCurrent++) {

rgchName[ichCurrent] = toupper(rgchName[ichCurrent]) ;

}

Указатели

Указатели в венгерской нотации отмечаются префиксами р или lp (lp означает long pointer, длинный указатель, подчеркивая тем самым его длину). Обращаясь к подсказке Borland вы нередко столкнетесь с переменными, имена которых начинаются на lp:

int lstrcmp(LPCSTR IpszStringI, LPCSTR lpsz3tring2) ;

istrcmp сравнивает две строки (sz употребляется для строк в стиле С, т. е. завершающихся нулем — zero-terminated string). Добавление lp к sz просто означает, что перед нами длинный указатель на строку, завершающуюся