198 ______Часть II. Программирование на C++

средственно на C++, используя соглашения Windows о вызовах, то могли видеть главную функцию Windows

int PASCAL WinMainf HINSTANCE hinstance,

HINSTANCE hPrevInstance, LPSTR IpszCmdLine, int nCmdShow)

Microsoft, будучи автором протокола Windows, использует вызовы Pascal, запрещающие компилятору предварять имена подчеркиванием. Уточнения не происходит. Те же соглашения применяются для программ на Visual Pascal и Object Pascal. Можно использовать спецификатор cdeci или описатель pascal, но тогда необходимо, последовательно ставить его во всех компилируемых файлах (см. также раздел "cdecl" — там показан этот прием при компоновке С).

Ни один из методов нельзя назвать ни правильным, ни неправильным. Различные языки требуют различных подходов в реализации, но именно это и затрудняет программирование с использованием нескольких языков.

*

struct

Структуры (struct) в С служат для определения составных типов данных и очень похожи на записи (record) из языка? Pascal. Они используются для группировки данных под одним именем. Новым стандартом в C++ является класс (class). Хотя по многим причинам классы предпочтительнее (см. главу 14 "Базовые концепции классов"), структуры все еще употребляются и их можно встретить во многих программах и книгах.

Замечание

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

Элементы данных в struct описываются точно так же, как и в любом другом пространстве имен: type var_name. Вот, например, отрывок из файла dir.h, описывающий структуру под именем ffblk:

struct ffblk {

char ff_reserved[21];

char ff_attrib;

unsigned ff_ftime;

unsigned ff fdate;

long ff_fsize;

char ff_name[13];

};

(Эта структура используется многими функциями; она в какой-то степени соответствует элементу каталога файловой системы DOS). Структуры по