Тип данных word c
bool : хранит значение true или false (логические литералы). Представлен системным типом System.Boolean
byte : хранит целое число от 0 до 255 и занимает 1 байт. Представлен системным типом System.Byte
sbyte : хранит целое число от -128 до 127 и занимает 1 байт. Представлен системным типом System.SByte
short : хранит целое число от -32768 до 32767 и занимает 2 байта. Представлен системным типом System.Int16
ushort : хранит целое число от 0 до 65535 и занимает 2 байта. Представлен системным типом System.UInt16
int : хранит целое число от -2147483648 до 2147483647 и занимает 4 байта. Представлен системным типом System.Int32 . Все целочисленные литералы по умолчанию представляют значения типа int:
uint : хранит целое число от 0 до 4294967295 и занимает 4 байта. Представлен системным типом System.UInt32
long : хранит целое число от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 и занимает 8 байт. Представлен системным типом System.Int64
ulong : хранит целое число от 0 до 18 446 744 073 709 551 615 и занимает 8 байт. Представлен системным типом System.UInt64
float : хранит число с плавающей точкой от -3.4*10 38 до 3.4*10 38 и занимает 4 байта. Представлен системным типом System.Single
double : хранит число с плавающей точкой от ±5.0*10 -324 до ±1.7*10 308 и занимает 8 байта. Представлен системным типом System.Double
decimal : хранит десятичное дробное число. Если употребляется без десятичной запятой, имеет значение от ±1.0*10 -28 до ±7.9228*10 28 , может хранить 28 знаков после запятой и занимает 16 байт. Представлен системным типом System.Decimal
string : хранит набор символов Unicode. Представлен системным типом System.String . Этому типу соответствуют строковые литералы.
Например, определим несколько переменных разных типов и выведем их значения на консоль:
Для вывода данных на консоль здесь применяется интерполяция: перед строкой ставится знак $ и после этого мы можем вводить в строку в фигурных скобках значения переменных. Консольный вывод программы:
Использование суффиксов
При присвоении значений надо иметь в виду следующую тонкость: все вещественные литералы (дробные числа) рассматриваются как значения типа double . И чтобы указать, что дробное число представляет тип float или тип decimal , необходимо к литералу добавлять суффикс: F/f - для float и M/m - для decimal.
Подобным образом все целочисленные литералы рассматриваются как значения типа int . Чтобы явным образом указать, что целочисленный литерал представляет значение типа uint, надо использовать суффикс U/u , для типа long - суффикс L/l , а для типа ulong - суффикс UL/ul :
Использование системных типов
Выше при перечислении всех базовых типов данных для каждого упоминался системный тип. Потому что название встроенного типа по сути представляет собой сокращенное обозначение системного типа. Например, следующие переменные будут эквивалентны по типу:
Неявная типизация
Ранее мы явным образом указывали тип переменных, например, int x; . И компилятор при запуске уже знал, что x хранит целочисленное значение.
Однако мы можем использовать и модель неявной типизации:
Для неявной типизации вместо названия типа данных используется ключевое слово var . Затем уже при компиляции компилятор сам выводит тип данных исходя из присвоенного значения. Так как по умолчанию все целочисленные значения рассматриваются как значения типа int , то поэтому в итоге переменная c будет иметь тип int . Аналогично переменной hello присваивается строка, поэтому эта переменная будет иметь тип string
Эти переменные подобны обычным, однако они имеют некоторые ограничения.
Во-первых, мы не можем сначала объявить неявно типизируемую переменную, а затем инициализировать:
Во-вторых, мы не можем указать в качестве значения неявно типизируемой переменной null :
Концепция типа очень важна в C++. Каждая переменная, аргумент функции и возвращаемое значение функции должны иметь тип, чтобы их можно было скомпилировать. Кроме того, перед вычислением каждого выражения (включая литеральные значения) компилятор неявно назначает ему тип. Некоторые примеры типов включают int хранение целых значений, double хранение значений с плавающей запятой (также называемых скалярными типами данных) или класс стандартной библиотеки std::basic_string для хранения текста. Вы можете создать собственный тип, определив или class struct . Тип определяет объем памяти, выделяемой для переменной (или результата выражения), типы значений, которые могут храниться в этой переменной, способ интерпретации значений (например, битовые шаблоны), и операции, допустимые с переменной. Эта статья содержит неформальный обзор основных особенностей системы типов C++.
Терминология
Переменная: символьное имя количества данных, чтобы его можно было использовать для доступа к данным, на которые он ссылается, во всей области кода, в котором он определен. В C++ переменная обычно используется для ссылки на экземпляры скалярных типов данных, тогда как экземпляры других типов обычно называются объектами.
Объект. Для простоты и согласованности в этой статье используется объект терминов для ссылки на любой экземпляр класса или структуры, а когда он используется в общем смысле, включает все типы, даже скалярные переменные.
Тип POD (обычные старые данные): эта неформальная категория типов данных в C++ относится к типам, которые являются скалярными (см. раздел "Основные типы") или являются классами POD. Класс POD не содержит статических данных-членов, которые не являются типами POD, а также не содержит пользовательских конструкторов, пользовательских деструкторов или пользовательских операторов присваивания. Кроме того, класс POD не имеет виртуальных функций, базового класса и ни закрытых, ни защищенных нестатических данных-членов. Типы POD часто используются для внешнего обмена данными, например с модулем, написанным на языке С (в котором имеются только типы POD).
Указание типов переменных и функций
C++ — это строго типизированный язык, который также является статически типизированным; каждый объект имеет тип и этот тип никогда не изменяется (не следует путать со статическими объектами данных). При объявлении переменной в коде необходимо явно указать его тип или использовать auto ключевое слово, чтобы указать компилятору выводить тип из инициализатора. При объявлении функции в коде необходимо указать тип каждого аргумента и его возвращаемое значение, или void если значение не возвращается функцией. Исключением является использование шаблонов функции, которые допускают аргументы произвольных типов.
После объявления переменной изменить ее тип впоследствии уже невозможно. Однако можно скопировать значения переменной или возвращаемое значение функции в другую переменную другого типа. Такие операции называются преобразованиями типов, которые иногда необходимы, но также являются потенциальными источниками потери данных или неправильности.
При объявлении переменной типа POD настоятельно рекомендуется инициализировать ее, т. е. указать начальное значение. Пока переменная не инициализирована, она имеет "мусорное" значение, определяемое значениями битов, которые ранее были установлены в этом месте памяти. Необходимо учитывать эту особенность языка C++, особенно при переходе с другого языка, который обрабатывает инициализацию автоматически. При объявлении переменной типа, не являющегося классом POD, инициализация обрабатывается конструктором.
В следующем примере показано несколько простых объявлений переменных с небольшим описанием для каждого объявления. В примере также показано, как компилятор использует сведения о типе, чтобы разрешить или запретить некоторые последующие операции с переменной.
Базовые (встроенные) типы
В отличие от некоторых других языков, в C++ нет универсального базового типа, от которого наследуются все остальные типы. Язык включает множество фундаментальных типов, также известных как встроенные типы. Сюда входят числовые типы, такие как int , double , long bool , а также char типы и wchar_t типы для символов ASCII и ЮНИКОД соответственно. Большинство целочисленных фундаментальных типов (за исключением bool , double wchar_t и связанных типов) имеют unsigned версии, которые изменяют диапазон значений, которые может хранить переменная. Например, int 32-разрядное целое число со знаком может представлять значение от -2 147 483 648 до 2 147 483 647. Значение unsigned int , которое также хранится как 32-разрядные, может хранить значение от 0 до 4294 967 295. Общее количество возможных значений в каждом случае одинаково, отличается только диапазон.
Базовые типы распознаются компилятором, в котором предусмотрены встроенные правила, управляющие операциями, выполняемыми с такими типами, а также преобразованием в другие базовые типы. Полный список встроенных типов и их размеров и числовых ограничений см. в разделе "Встроенные типы".
На следующем рисунке показаны относительные размеры встроенных типов в реализации Microsoft C++:
В следующей таблице перечислены наиболее часто используемые фундаментальные типы и их размеры в реализации Microsoft C++:
Тип | Размер | Комментарий |
---|---|---|
int | 4 байта | Выбор по умолчанию для целочисленных значений. |
double | 8 байт | Выбор по умолчанию для значений с плавающей запятой. |
bool | 1 байт | Представляет значения, которые могут быть или true, или false. |
char | 1 байт | Используйте для символов ASCII в старых строках в стиле C или в объектах std::string, которые никогда не будут преобразовываться в Юникод. |
wchar_t | 2 байта | Представляет "расширенные" символы, которые могут быть представлены в формате Юникод (UTF-16 в Windows, в других операционных системах возможно другое представление). Это символьный тип, используемый в строках типа std::wstring . |
unsigned char | 1 байт | В C++ нет встроенного типа байтов. Используется unsigned char для представления байтового значения. |
unsigned int | 4 байта | Вариант по умолчанию для битовых флагов. |
long long | 8 байт | Представляет очень большие целочисленные значения. |
Другие реализации C++ могут использовать разные размеры для определенных числовых типов. Дополнительные сведения о размерах и связях размера, необходимых стандарту C++, см. в разделе "Встроенные типы".
Тип void
Тип void является особым типом. Переменная типа void не может объявляться, но можно объявить переменную типа void * (указатель на void ), что иногда необходимо при выделении необработанной (нетипизированной) памяти. Однако указатели не void являются типобезопасными и, как правило, их использование настоятельно не рекомендуется использовать в современном C++. В объявлении функции возвращаемое void значение означает, что функция не возвращает значение; это общее и допустимое использование void . Хотя язык C требует функций, имеющих нулевые параметры для объявления void в списке параметров, например, fou(void) эта практика не рекомендуется в современном C++ и должна быть объявлена fou() . Дополнительные сведения см. в разделе "Преобразования типов" и "Безопасность типов".
Квалификатор типа const
Любой встроенный или пользовательский тип может квалифицироваться ключевым словом const. Кроме того, функции-члены могут быть const квалифицированы и даже const перегружены. Значение const типа невозможно изменить после инициализации.
Квалификатор const широко используется в объявлениях функций и переменных, и "константная правильность" является важной концепцией в C++. По сути, это означает, const что во время компиляции значения не изменяются непреднамеренно. Дополнительные сведения см. в разделе const .
Тип const отличается от его версии, const int отличной от константной, например, является отдельным типом. int Оператор C++ const_cast можно использовать в тех редких случаях, когда необходимо удалить const-ness из переменной. Дополнительные сведения см. в разделе "Преобразования типов" и "Безопасность типов".
Строковые типы
Определяемые пользователем типы
При определении class , struct union или enum , эта конструкция используется в остальной части кода, как если бы это был фундаментальный тип. Он имеет известный размер в памяти, и в его отношении действуют определенные правила проверки во время компиляции и во время выполнения в течение срока использования программы. Основные различия между базовыми встроенными типами и пользовательскими типами указаны ниже:
Компилятор не имеет встроенных сведений о пользовательском типе. Он узнает о типе при первом обнаружении определения во время процесса компиляции.
Пользователь определяет, какие операции можно выполнять с типом и как его можно преобразовать в другие типы, задавая (через перегрузку) соответствующие операторы, либо в виде членов класса, либо в виде функций, не являющихся членами. Дополнительные сведения см. в разделе "Перегрузка функций"
типы указателей
Как и самые ранние версии языка C, язык C++ по-прежнему позволяет объявить переменную типа указателя с помощью специального декларатора * (звездочка). Тип указателя хранит адрес расположения в памяти, в котором хранится фактическое значение данных. В современном C++ они называются необработанными указателями и доступны в коде с помощью специальных операторов * (звездочка) или -> (дефис с большим числом). Это называется разыменовыванием, которое вы используете, зависит от того, выполняется ли разыменовывание указателя на скаляр или указатель на член в объекте. Работа с типами указателя долгое время была одним из наиболее трудных и непонятных аспектов разработки программ на языках C и C++. В этом разделе описываются некоторые факты и рекомендации по использованию необработанных указателей, если вы хотите, но в современном C++ больше не требуется (или рекомендуется) использовать необработанные указатели для владения объектами вообще из-за эволюции интеллектуального указателя (подробнее рассматривается в конце этого раздела). Все еще полезно и безопасно использовать необработанные указатели для отслеживания объектов, но если требуется использовать их для владения объектом, необходимо делать это с осторожностью и после тщательного анализа процедуры создания и уничтожения объектов, которые им принадлежат.
Первое, что необходимо знать, — это то, что при объявлении переменной необработанного указателя выделяется только память, необходимая для хранения адреса расположения памяти, на который будет ссылаться указатель при разыменовывании. Выделение памяти для самого значения данных (также называемого резервным хранилищем) еще не выделено. Другими словами, объявив переменную необработанного указателя, вы создаете переменную адреса памяти, а не фактическую переменную данных. Разыменовывание переменной указателя до проверки того, что она содержит действительный адрес в резервном хранилище, приведет к неопределенному поведению (обычно неустранимой ошибке) программы. В следующем примере демонстрируется подобная ошибка:
Пример разыменовывает тип указателя без выделения памяти для хранения фактических целочисленных данных или без выделенного допустимого адреса памяти. В следующем коде исправлены эти ошибки:
В исправленном примере кода используется локальной память стека для создания резервного хранилища, на который указывает указатель pNumber . Базовый тип используется для простоты. На практике резервное хранилище указателей — это наиболее часто определяемые пользователем типы, динамически выделяемые в области памяти, называемой кучей (или свободным хранилищем), с помощью new выражения ключевых слов (в программировании в стиле C была использована старая malloc() функция библиотеки среды выполнения C). После выделения эти переменные обычно называются объектами, особенно если они основаны на определении класса. Память, выделенная вместе с new ней, должна быть удалена соответствующим delete оператором (или, если для ее выделения использовалась malloc() функция free() среды выполнения C).
Однако легко забыть удалить динамически выделенный объект, особенно в сложном коде, что вызывает ошибку ресурса, называемую утечкой памяти. По этой причине в современном С++ настоятельно не рекомендуется использовать необработанные указатели. Почти всегда лучше упаковать необработанный указатель в интеллектуальный указатель, который автоматически освобождает память при вызове деструктора (когда код выходит за пределы области для интеллектуального указателя); используя интеллектуальные указатели, вы практически устраняете целый класс ошибок в программах C++. В следующем примере предположим, что MyClass — это пользовательский тип, который имеет открытый метод DoSomeWork();
Дополнительные сведения о смарт-указателях см. в разделе "Интеллектуальные указатели".
Дополнительные сведения о преобразованиях указателей см. в разделе "Преобразования типов" и "Безопасность типов".
Дополнительные сведения о указателях в целом см. в разделе "Указатели".
Типы данных Windows
Дополнительные сведения
Дополнительные сведения о системе типов C++ см. в следующих разделах.
Типы значений
Описывает типы значений вместе с проблемами, связанными с их использованием.
Преобразования типов и безопасность типов
Описание типовых проблем преобразования типов и способов их избежать.
The data types supported by Windows are used to define function return values, function and message parameters, and structure members. They define the size and meaning of these elements. For more information about the underlying C/C++ data types, see Data Type Ranges.
The following table contains the following types: character, integer, Boolean, pointer, and handle. The character, integer, and Boolean types are common to most C compilers. Most of the pointer-type names begin with a prefix of P or LP. Handles refer to a resource that has been loaded into memory.
For more information about handling 64-bit integers, see Large Integers.
A handle to an object.
This type is declared in WinNT.h as follows:
typedef PVOID HANDLE;
This type is declared in WinDef.h as follows:
typedef HANDLE HBITMAP;
This type is declared in WinDef.h as follows:
typedef HANDLE HBRUSH;
This type is declared in WinDef.h as follows:
typedef HANDLE HCOLORSPACE;
A handle to a dynamic data exchange (DDE) conversation.
This type is declared in Ddeml.h as follows:
typedef HANDLE HCONV;
A handle to a DDE conversation list.
This type is declared in Ddeml.h as follows:
typedef HANDLE HCONVLIST;
This type is declared in WinDef.h as follows:
typedef HICON HCURSOR;
This type is declared in WinDef.h as follows:
typedef HANDLE HDC;
A handle to DDE data.
This type is declared in Ddeml.h as follows:
typedef HANDLE HDDEDATA;
This type is declared in WinDef.h as follows:
typedef HANDLE HDESK;
A handle to an internal drop structure.
This type is declared in ShellApi.h as follows:
typedef HANDLE HDROP;
A handle to a deferred window position structure.
This type is declared in WinUser.h as follows:
typedef HANDLE HDWP;
This type is declared in WinDef.h as follows:
typedef HANDLE HENHMETAFILE;
This type is declared in WinDef.h as follows:
typedef int HFILE;
This type is declared in WinDef.h as follows:
typedef HANDLE HFONT;
A handle to a GDI object.
This type is declared in WinDef.h as follows:
typedef HANDLE HGDIOBJ;
A handle to a global memory block.
This type is declared in WinDef.h as follows:
typedef HANDLE HGLOBAL;
This type is declared in WinDef.h as follows:
typedef HANDLE HHOOK;
This type is declared in WinDef.h as follows:
typedef HANDLE HICON;
A handle to an instance. This is the base address of the module in memory.
HMODULE and HINSTANCE are the same today, but represented different things in 16-bit Windows.
This type is declared in WinDef.h as follows:
typedef HANDLE HINSTANCE;
A handle to a registry key.
This type is declared in WinDef.h as follows:
typedef HANDLE HKEY;
An input locale identifier.
This type is declared in WinDef.h as follows:
typedef HANDLE HKL;
A handle to a local memory block.
This type is declared in WinDef.h as follows:
typedef HANDLE HLOCAL;
This type is declared in WinDef.h as follows:
typedef HANDLE HMENU;
This type is declared in WinDef.h as follows:
typedef HANDLE HMETAFILE;
A handle to a module. The is the base address of the module in memory.
HMODULE and HINSTANCE are the same in current versions of Windows, but represented different things in 16-bit Windows.
This type is declared in WinDef.h as follows:
typedef HINSTANCE HMODULE;
A handle to a display monitor.
This type is declared in WinDef.h as follows:
if(WINVER >= 0x0500) typedef HANDLE HMONITOR;
A handle to a palette.
This type is declared in WinDef.h as follows:
typedef HANDLE HPALETTE;
This type is declared in WinDef.h as follows:
typedef HANDLE HPEN;
The return codes used by COM interfaces. For more information, see Structure of the COM Error Codes. To test an HRESULT value, use the FAILED and SUCCEEDED macros.
This type is declared in WinNT.h as follows:
typedef LONG HRESULT;
This type is declared in WinDef.h as follows:
typedef HANDLE HRGN;
A handle to a resource.
This type is declared in WinDef.h as follows:
typedef HANDLE HRSRC;
A handle to a DDE string.
This type is declared in Ddeml.h as follows:
typedef HANDLE HSZ;
This type is declared in WinDef.h as follows:
typedef HANDLE WINSTA;
This type is declared in WinDef.h as follows:
typedef HANDLE HWND;
A 32-bit signed integer. The range is -2147483648 through 2147483647 decimal.
This type is declared in WinDef.h as follows:
typedef int INT;
A signed integer type for pointer precision. Use when casting a pointer to an integer to perform pointer arithmetic.
This type is declared in BaseTsd.h as follows:
This type is declared in BaseTsd.h as follows:
typedef signed char INT8;
A 16-bit signed integer.
This type is declared in BaseTsd.h as follows:
typedef signed short INT16;
A 32-bit signed integer. The range is -2147483648 through 2147483647 decimal.
This type is declared in BaseTsd.h as follows:
typedef signed int INT32;
A 64-bit signed integer. The range is -9223372036854775808 through 9223372036854775807 decimal.
This type is declared in BaseTsd.h as follows:
typedef signed __int64 INT64;
A language identifier. For more information, see Language Identifiers.
This type is declared in WinNT.h as follows:
typedef WORD LANGID;
A locale identifier. For more information, see Locale Identifiers.
This type is declared in WinNT.h as follows:
typedef DWORD LCID;
A locale information type. For a list, see Locale Information Constants.
This type is declared in WinNls.h as follows:
typedef DWORD LCTYPE;
This type is declared in WinNls.h as follows:
typedef DWORD LGRPID;
A 32-bit signed integer. The range is -2147483648 through 2147483647 decimal.
This type is declared in WinNT.h as follows:
typedef long LONG;
A 64-bit signed integer. The range is -9223372036854775808 through 9223372036854775807 decimal.
This type is declared in WinNT.h as follows:
A signed long type for pointer precision. Use when casting a pointer to a long to perform pointer arithmetic.
This type is declared in BaseTsd.h as follows:
A 32-bit signed integer. The range is -2147483648 through 2147483647 decimal.
This type is declared in BaseTsd.h as follows:
typedef signed int LONG32;
A 64-bit signed integer. The range is -9223372036854775808 through 9223372036854775807 decimal.
This type is declared in BaseTsd.h as follows:
typedef __int64 LONG64;
A message parameter.
This type is declared in WinDef.h as follows:
typedef LONG_PTR LPARAM;
This type is declared in WinDef.h as follows:
typedef BOOL far *LPBOOL;
This type is declared in WinDef.h as follows:
typedef BYTE far *LPBYTE;
This type is declared in WinDef.h as follows:
typedef DWORD *LPCOLORREF;
This type is declared in WinNT.h as follows:
typedef __nullterminated CONST CHAR *LPCSTR;
An LPCWSTR if UNICODE is defined, an LPCSTR otherwise. For more information, see Windows Data Types for Strings.
This type is declared in WinNT.h as follows:
A pointer to a constant of any type.
This type is declared in WinDef.h as follows:
typedef CONST void *LPCVOID;
A pointer to a constant null-terminated string of 16-bit Unicode characters. For more information, see Character Sets Used By Fonts.
This type is declared in WinNT.h as follows:
typedef CONST WCHAR *LPCWSTR;
This type is declared in WinDef.h as follows:
typedef DWORD *LPDWORD;
This type is declared in WinDef.h as follows:
typedef HANDLE *LPHANDLE;
This type is declared in WinDef.h as follows:
typedef int *LPINT;
This type is declared in WinDef.h as follows:
typedef long *LPLONG;
This type is declared in WinNT.h as follows:
typedef CHAR *LPSTR;
An LPWSTR if UNICODE is defined, an LPSTR otherwise. For more information, see Windows Data Types for Strings.
This type is declared in WinNT.h as follows:
A pointer to any type.
This type is declared in WinDef.h as follows:
typedef void *LPVOID;
This type is declared in WinDef.h as follows:
typedef WORD *LPWORD;
A pointer to a null-terminated string of 16-bit Unicode characters. For more information, see Character Sets Used By Fonts.
This type is declared in WinNT.h as follows:
typedef WCHAR *LPWSTR;
Signed result of message processing.
This type is declared in WinDef.h as follows:
typedef LONG_PTR LRESULT;
This type is declared in WinDef.h as follows:
typedef BOOL *PBOOL;
This type is declared in WinNT.h as follows:
typedef BOOLEAN *PBOOLEAN;
This type is declared in WinDef.h as follows:
typedef BYTE *PBYTE;
This type is declared in WinNT.h as follows:
typedef CHAR *PCHAR;
This type is declared in WinNT.h as follows:
typedef CONST CHAR *PCSTR;
A PCWSTR if UNICODE is defined, a PCSTR otherwise. For more information, see Windows Data Types for Strings.
This type is declared in WinNT.h as follows:
A pointer to a constant null-terminated string of 16-bit Unicode characters. For more information, see Character Sets Used By Fonts.
This type is declared in WinNT.h as follows:
typedef CONST WCHAR *PCWSTR;
This type is declared in WinDef.h as follows:
typedef DWORD *PDWORD;
This type is declared in WinNT.h as follows:
typedef DWORDLONG *PDWORDLONG;
This type is declared in BaseTsd.h as follows:
typedef DWORD_PTR *PDWORD_PTR;
This type is declared in BaseTsd.h as follows:
typedef DWORD32 *PDWORD32;
This type is declared in BaseTsd.h as follows:
typedef DWORD64 *PDWORD64;
This type is declared in WinDef.h as follows:
typedef FLOAT *PFLOAT;
This type is declared in BaseTsd.h as follows:
This type is declared in WinNT.h as follows:
typedef HANDLE *PHANDLE;
This type is declared in WinDef.h as follows:
typedef HKEY *PHKEY;
This type is declared in WinDef.h as follows:
typedef int *PINT;
This type is declared in BaseTsd.h as follows:
typedef INT_PTR *PINT_PTR;
This type is declared in BaseTsd.h as follows:
typedef INT8 *PINT8;
This type is declared in BaseTsd.h as follows:
typedef INT16 *PINT16;
This type is declared in BaseTsd.h as follows:
typedef INT32 *PINT32;
This type is declared in BaseTsd.h as follows:
typedef INT64 *PINT64;
This type is declared in WinNT.h as follows:
typedef PDWORD PLCID;
This type is declared in WinNT.h as follows:
typedef LONG *PLONG;
This type is declared in WinNT.h as follows:
typedef LONGLONG *PLONGLONG;
This type is declared in BaseTsd.h as follows:
typedef LONG_PTR *PLONG_PTR;
This type is declared in BaseTsd.h as follows:
typedef LONG32 *PLONG32;
This type is declared in BaseTsd.h as follows:
typedef LONG64 *PLONG64;
A 32-bit pointer. On a 32-bit system, this is a native pointer. On a 64-bit system, this is a truncated 64-bit pointer.
This type is declared in BaseTsd.h as follows:
A 64-bit pointer. On a 64-bit system, this is a native pointer. On a 32-bit system, this is a sign-extended 32-bit pointer.
Note that it is not safe to assume the state of the high pointer bit.
This type is declared in BaseTsd.h as follows:
A signed pointer.
This type is declared in BaseTsd.h as follows:
An unsigned pointer.
This type is declared in BaseTsd.h as follows:
This type is declared in WinNT.h as follows:
typedef SHORT *PSHORT;
This type is declared in BaseTsd.h as follows:
typedef SIZE_T *PSIZE_T;
This type is declared in BaseTsd.h as follows:
typedef SSIZE_T *PSSIZE_T;
This type is declared in WinNT.h as follows:
typedef CHAR *PSTR;
This type is declared in WinNT.h as follows:
typedef TBYTE *PTBYTE;
This type is declared in WinNT.h as follows:
typedef TCHAR *PTCHAR;
A PWSTR if UNICODE is defined, a PSTR otherwise. For more information, see Windows Data Types for Strings.
This type is declared in WinNT.h as follows:
This type is declared in WinDef.h as follows:
typedef UCHAR *PUCHAR;
This type is declared in BaseTsd.h as follows:
This type is declared in WinDef.h as follows:
typedef UINT *PUINT;
This type is declared in BaseTsd.h as follows:
typedef UINT_PTR *PUINT_PTR;
This type is declared in BaseTsd.h as follows:
typedef UINT8 *PUINT8;
This type is declared in BaseTsd.h as follows:
typedef UINT16 *PUINT16;
This type is declared in BaseTsd.h as follows:
typedef UINT32 *PUINT32;
This type is declared in BaseTsd.h as follows:
typedef UINT64 *PUINT64;
This type is declared in WinDef.h as follows:
typedef ULONG *PULONG;
This type is declared in WinDef.h as follows:
typedef ULONGLONG *PULONGLONG;
This type is declared in BaseTsd.h as follows:
typedef ULONG_PTR *PULONG_PTR;
This type is declared in BaseTsd.h as follows:
typedef ULONG32 *PULONG32;
This type is declared in BaseTsd.h as follows:
typedef ULONG64 *PULONG64;
This type is declared in WinDef.h as follows:
typedef USHORT *PUSHORT;
A pointer to any type.
This type is declared in WinNT.h as follows:
typedef void *PVOID;
This type is declared in WinNT.h as follows:
typedef WCHAR *PWCHAR;
This type is declared in WinDef.h as follows:
typedef WORD *PWORD;
A pointer to a null-terminated string of 16-bit Unicode characters. For more information, see Character Sets Used By Fonts.
This type is declared in WinNT.h as follows:
typedef WCHAR *PWSTR;
A 64-bit unsigned integer.
This type is declared as follows:
typedef unsigned __int64 QWORD;
A handle to a service control manager database. For more information, see SCM Handles.
This type is declared in WinSvc.h as follows:
typedef HANDLE SC_HANDLE;
A lock to a service control manager database. For more information, see SCM Handles.
This type is declared in WinSvc.h as follows:
typedef LPVOID SC_LOCK;
A handle to a service status value. For more information, see SCM Handles.
This type is declared in WinSvc.h as follows:
typedef HANDLE SERVICE_STATUS_HANDLE;
A 16-bit integer. The range is -32768 through 32767 decimal.
This type is declared in WinNT.h as follows:
typedef short SHORT;
The maximum number of bytes to which a pointer can point. Use for a count that must span the full range of a pointer.
This type is declared in BaseTsd.h as follows:
typedef ULONG_PTR SIZE_T;
This type is declared in BaseTsd.h as follows:
typedef LONG_PTR SSIZE_T;
A WCHAR if UNICODE is defined, a CHAR otherwise.
This type is declared in WinNT.h as follows:
A WCHAR if UNICODE is defined, a CHAR otherwise.
This type is declared in WinNT.h as follows:
This type is declared in WinDef.h as follows:
typedef unsigned char UCHAR;
An unsigned HALF_PTR. Use within a structure that contains a pointer and two small fields.
This type is declared in BaseTsd.h as follows:
An unsigned INT. The range is 0 through 4294967295 decimal.
This type is declared in WinDef.h as follows:
typedef unsigned int UINT;
This type is declared in BaseTsd.h as follows:
This type is declared in BaseTsd.h as follows:
typedef unsigned char UINT8;
This type is declared in BaseTsd.h as follows:
typedef unsigned short UINT16;
An unsigned INT32. The range is 0 through 4294967295 decimal.
This type is declared in BaseTsd.h as follows:
typedef unsigned int UINT32;
An unsigned INT64. The range is 0 through 18446744073709551615 decimal.
This type is declared in BaseTsd.h as follows:
typedef unsigned __int64 UINT64;
An unsigned LONG. The range is 0 through 4294967295 decimal.
This type is declared in WinDef.h as follows:
typedef unsigned long ULONG;
A 64-bit unsigned integer. The range is 0 through 18446744073709551615 decimal.
This type is declared in WinNT.h as follows:
This type is declared in BaseTsd.h as follows:
An unsigned LONG32. The range is 0 through 4294967295 decimal.
This type is declared in BaseTsd.h as follows:
typedef unsigned int ULONG32;
An unsigned LONG64. The range is 0 through 18446744073709551615 decimal.
This type is declared in BaseTsd.h as follows:
typedef unsigned __int64 ULONG64;
A Unicode string.
This type is declared in Winternl.h as follows:
An unsigned SHORT. The range is 0 through 65535 decimal.
This type is declared in WinDef.h as follows:
typedef unsigned short USHORT;
An update sequence number (USN).
This type is declared in WinNT.h as follows:
typedef LONGLONG USN;
This type is declared in WinNT.h as follows:
A 16-bit Unicode character. For more information, see Character Sets Used By Fonts.
This type is declared in WinNT.h as follows:
typedef wchar_t WCHAR;
The calling convention for system functions.
This type is declared in WinDef.h as follows:
CALLBACK, WINAPI, and APIENTRY are all used to define functions with the __stdcall calling convention. Most functions in the Windows API are declared using WINAPI. You may wish to use CALLBACK for the callback functions that you implement to help identify the function as a callback function.
В следующей таблице содержатся следующие типы: символ, целое число, логическое значение, указатель и дескриптор. Типы символов, целых чисел и логических типов являются общими для большинства компиляторов C. Большинство имен типов указателей начинаются с префикса P или LP. Дескрипторы ссылаются на ресурс, загруженный в память.
Дополнительные сведения об обработке 64-разрядных целых чисел см. в разделе "Большие целые числа".
Этот тип объявлен в WinNT.h следующим образом:
typedef PVOID HANDLE;
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HBITMAP;
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HBRUSH;
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HCOLORSPACE;
Дескриптор динамического обмена данными (DDE).
Этот тип объявлен в Ddeml.h следующим образом:
typedef HANDLE HCONV;
Дескриптор списка бесед DDE.
Этот тип объявлен в Ddeml.h следующим образом:
typedef HANDLE HCONVLIST;
Этот тип объявлен в WinDef.h следующим образом:
typedef HICON HCURSOR;
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HDC;
Дескриптор данных DDE.
Этот тип объявлен в Ddeml.h следующим образом:
typedef HANDLE HDDEDATA;
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HDESK;
Дескриптор внутренней структуры удаления.
Этот тип объявлен в ShellApi.h следующим образом:
typedef HANDLE HDROP;
Дескриптор структуры позиции отложенного окна.
Этот тип объявлен в WinUser.h следующим образом:
typedef HANDLE HDWP;
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HENHMETAFILE;
Этот тип объявлен в WinDef.h следующим образом:
typedef int HFILE;
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HFONT;
Дескриптор объекта GDI.
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HGDIOBJ;
Дескриптор глобального блока памяти.
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HGLOBAL;
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HHOOK;
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HICON;
Дескриптор экземпляра. Это базовый адрес модуля в памяти.
HMODULE и HINSTANCE сегодня одинаковы, но представлены различные вещи в 16-разрядной Windows.
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HINSTANCE;
Дескриптор раздела реестра.
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HKEY;
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HKL;
Дескриптор локального блока памяти.
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HLOCAL;
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HMENU;
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HMETAFILE;
Дескриптор модуля. Это базовый адрес модуля в памяти.
HMODULE и HINSTANCE одинаковы в текущих версиях Windows, но представлены разные вещи в 16-разрядной Windows.
Этот тип объявлен в WinDef.h следующим образом:
typedef HINSTANCE HMODULE;
Дескриптор монитора дисплея.
Этот тип объявлен в WinDef.h следующим образом:
if(WINVER >= 0x0500) typedef HANDLE HMONITOR;
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HPALETTE;
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HPEN;
Коды возврата, используемые com-интерфейсами. Дополнительные сведения см. в разделе "Структура кодов ошибок COM". Чтобы проверить значение HRESULT , используйте макросы FAILED и SUCCEEDED .
Этот тип объявлен в WinNT.h следующим образом:
typedef LONG HRESULT;
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HRGN;
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HRSRC;
Дескриптор строки DDE.
Этот тип объявлен в Ddeml.h следующим образом:
typedef HANDLE HSZ;
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE WINSTA;
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE HWND;
32-разрядное знаковое целое число. Диапазон — -2147483648 до десятичного числа 2147483647.
Этот тип объявлен в WinDef.h следующим образом:
typedef int INT;
Целочисленный тип со знаком для точности указателя. Используется при приведение указателя к целому числу для выполнения арифметических операций указателя.
Этот тип объявлен в BaseTsd.h следующим образом:
Этот тип объявлен в BaseTsd.h следующим образом:
typedef signed char INT8;
16-разрядное знаковое целое число.
Этот тип объявлен в BaseTsd.h следующим образом:
typedef signed short INT16;
32-разрядное знаковое целое число. Диапазон — -2147483648 до десятичного числа 2147483647.
Этот тип объявлен в BaseTsd.h следующим образом:
typedef signed int INT32;
64-разрядное целое число со знаком. Диапазон — -9223372036854775808 до десятичного числа 9223372036854775807.
Этот тип объявлен в BaseTsd.h следующим образом:
typedef signed __int64 INT64;
Идентификатор языка. Дополнительные сведения см. в разделе "Идентификаторы языка".
Этот тип объявлен в WinNT.h следующим образом:
typedef WORD LANGID;
Идентификатор языкового стандарта. Дополнительные сведения см. в разделе "Идентификаторы языкового стандарта".
Этот тип объявлен в WinNT.h следующим образом:
typedef DWORD LCID;
Тип сведений о языковом стандарте. Список см. в разделе "Константы сведений о языковом стандарте".
Этот тип объявлен в WinNls.h следующим образом:
typedef DWORD LCTYPE;
Идентификатор группы языков. Список см. в разделе EnumLanguageGroupLocales.
Этот тип объявлен в WinNls.h следующим образом:
typedef DWORD LGRPID;
32-разрядное знаковое целое число. Диапазон — -2147483648 до десятичного 2147483647.
Этот тип объявлен в WinNT.h следующим образом:
typedef long LONG;
64-разрядное целое число со знаком. Диапазон — -9223372036854775808 до десятичного 9223372036854775807.
Этот тип объявлен в WinNT.h следующим образом:
Подписанный длинный тип для точности указателя. Используется при приведение указателя к длинному для выполнения арифметики указателя.
Этот тип объявлен в BaseTsd.h следующим образом:
32-разрядное знаковое целое число. Диапазон — -2147483648 до десятичного 2147483647.
Этот тип объявлен в BaseTsd.h следующим образом:
typedef signed int LONG32;
64-разрядное целое число со знаком. Диапазон — -9223372036854775808 до десятичного 9223372036854775807.
Этот тип объявлен в BaseTsd.h следующим образом:
typedef __int64 LONG64;
Этот тип объявлен в WinDef.h следующим образом:
typedef LONG_PTR LPARAM;
Этот тип объявлен в WinDef.h следующим образом:
typedef BOOL far *LPBOOL;
Этот тип объявлен в WinDef.h следующим образом:
typedef BYTE far *LPBYTE;
Этот тип объявлен в WinDef.h следующим образом:
typedef DWORD *LPCOLORREF;
Этот тип объявлен в WinNT.h следующим образом:
typedef __nullterminated CONST CHAR *LPCSTR;
Этот тип объявлен в WinNT.h следующим образом:
Указатель на константу любого типа.
Этот тип объявлен в WinDef.h следующим образом:
typedef CONST void *LPCVOID;
Указатель на константную строку, завершаемую значением NULL, из 16-разрядных символов Юникода. Дополнительные сведения см. в разделе "Наборы символов", используемые шрифтами.
Этот тип объявлен в WinNT.h следующим образом:
typedef CONST WCHAR *LPCWSTR;
Этот тип объявлен в WinDef.h следующим образом:
typedef DWORD *LPDWORD;
Этот тип объявлен в WinDef.h следующим образом:
typedef HANDLE *LPHANDLE;
Этот тип объявлен в WinDef.h следующим образом:
typedef int *LPINT;
Этот тип объявлен в WinDef.h следующим образом:
typedef long *LPLONG;
Этот тип объявлен в WinNT.h следующим образом:
typedef CHAR *LPSTR;
Этот тип объявлен в WinNT.h следующим образом:
Указатель на любой тип.
Этот тип объявлен в WinDef.h следующим образом:
typedef void *LPVOID;
Этот тип объявлен в WinDef.h следующим образом:
typedef WORD *LPWORD;
Указатель на строку, завершаемую значением NULL, из 16-разрядных символов Юникода. Дополнительные сведения см. в разделе "Наборы символов", используемые шрифтами.
Этот тип объявлен в WinNT.h следующим образом:
typedef WCHAR *LPWSTR;
Этот тип объявлен в WinDef.h следующим образом:
typedef LONG_PTR LRESULT;
Этот тип объявлен в WinDef.h следующим образом:
typedef BOOL *PBOOL;
Этот тип объявлен в WinNT.h следующим образом:
typedef BOOLEAN *PBOOLEAN;
Этот тип объявлен в WinDef.h следующим образом:
typedef BYTE *PBYTE;
Этот тип объявлен в WinNT.h следующим образом:
typedef CHAR *PCHAR;
Этот тип объявлен в WinNT.h следующим образом:
typedef CONST CHAR *PCSTR;
Значение PCWSTR , если определен ЮНИКОД , в противном случае — PCSTR . Дополнительные сведения см. в разделе Windows Типы данных для строк.
Этот тип объявлен в WinNT.h следующим образом:
Указатель на константную строку, завершаемую значением NULL, из 16-разрядных символов Юникода. Дополнительные сведения см. в разделе "Наборы символов", используемые шрифтами.
Этот тип объявлен в WinNT.h следующим образом:
typedef CONST WCHAR *PCWSTR;
Этот тип объявлен в WinDef.h следующим образом:
typedef DWORD *PDWORD;
Этот тип объявлен в WinNT.h следующим образом:
typedef DWORDLONG *PDWORDLONG;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef DWORD_PTR *PDWORD_PTR;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef DWORD32 *PDWORD32;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef DWORD64 *PDWORD64;
Этот тип объявлен в WinDef.h следующим образом:
typedef FLOAT *PFLOAT;
Этот тип объявлен в BaseTsd.h следующим образом:
Этот тип объявлен в WinNT.h следующим образом:
typedef HANDLE *PHANDLE;
Этот тип объявлен в WinDef.h следующим образом:
typedef HKEY *PHKEY;
Этот тип объявлен в WinDef.h следующим образом:
typedef int *PINT;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef INT_PTR *PINT_PTR;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef INT8 *PINT8;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef INT16 *PINT16;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef INT32 *PINT32;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef INT64 *PINT64;
Этот тип объявлен в WinNT.h следующим образом:
typedef PDWORD PLCID;
Этот тип объявлен в WinNT.h следующим образом:
typedef LONG *PLONG;
Этот тип объявлен в WinNT.h следующим образом:
typedef LONGLONG *PLONGLONG;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef LONG_PTR *PLONG_PTR;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef LONG32 *PLONG32;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef LONG64 *PLONG64;
32-разрядный указатель. В 32-разрядной системе это собственный указатель. В 64-разрядной системе это усеченный 64-разрядный указатель.
Этот тип объявлен в BaseTsd.h следующим образом:
64-разрядный указатель. В 64-разрядной системе это собственный указатель. В 32-разрядной системе это 32-разрядный указатель с расширенным знаком.
Обратите внимание, что небезопасно предположить состояние бита верхнего указателя.
Этот тип объявлен в BaseTsd.h следующим образом:
Этот тип объявлен в BaseTsd.h следующим образом:
Этот тип объявлен в BaseTsd.h следующим образом:
Этот тип объявлен в WinNT.h следующим образом:
typedef SHORT *PSHORT;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef SIZE_T *PSIZE_T;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef SSIZE_T *PSSIZE_T;
Этот тип объявлен в WinNT.h следующим образом:
typedef CHAR *PSTR;
Этот тип объявлен в WinNT.h следующим образом:
typedef TBYTE *PTBYTE;
Этот тип объявлен в WinNT.h следующим образом:
typedef TCHAR *PTCHAR;
Значение PWSTR , если определен ЮНИКОД , в противном случае — PSTR . Дополнительные сведения см. в разделе Windows Типы данных для строк.
Этот тип объявлен в WinNT.h следующим образом:
Этот тип объявлен в WinDef.h следующим образом:
typedef UCHAR *PUCHAR;
Этот тип объявлен в BaseTsd.h следующим образом:
Этот тип объявлен в WinDef.h следующим образом:
typedef UINT *PUINT;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef UINT_PTR *PUINT_PTR;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef UINT8 *PUINT8;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef UINT16 *PUINT16;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef UINT32 *PUINT32;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef UINT64 *PUINT64;
Этот тип объявлен в WinDef.h следующим образом:
typedef ULONG *PULONG;
Этот тип объявлен в WinDef.h следующим образом:
typedef ULONGLONG *PULONGLONG;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef ULONG_PTR *PULONG_PTR;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef ULONG32 *PULONG32;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef ULONG64 *PULONG64;
Этот тип объявлен в WinDef.h следующим образом:
typedef USHORT *PUSHORT;
Указатель на любой тип.
Этот тип объявлен в WinNT.h следующим образом:
typedef void *PVOID;
Этот тип объявлен в WinNT.h следующим образом:
typedef WCHAR *PWCHAR;
Этот тип объявлен в WinDef.h следующим образом:
typedef WORD *PWORD;
Указатель на строку, завершаемую значением NULL, из 16-разрядных символов Юникода. Дополнительные сведения см. в разделе "Наборы символов", используемые шрифтами.
Этот тип объявлен в WinNT.h следующим образом:
typedef WCHAR *PWSTR;
64-разрядное целое число без знака.
Этот тип объявлен следующим образом:
typedef unsigned __int64 QWORD;
Дескриптор базы данных диспетчера управления службами. Дополнительные сведения см. в разделе "Дескрипторы SCM".
Этот тип объявлен в WinSvc.h следующим образом:
typedef HANDLE SC_HANDLE;
Блокировка базы данных диспетчера управления службами. Дополнительные сведения см. в разделе "Дескрипторы SCM".
Этот тип объявлен в WinSvc.h следующим образом:
typedef LPVOID SC_LOCK;
Дескриптор значения состояния службы. Дополнительные сведения см. в разделе "Дескрипторы SCM".
Этот тип объявлен в WinSvc.h следующим образом:
typedef HANDLE SERVICE_STATUS_HANDLE;
16-разрядное целое число. Диапазон составляет от –32768 до десятичного числа 32767.
Этот тип объявлен в WinNT.h следующим образом:
typedef short SHORT;
Максимальное число байтов, на которое может указывать указатель. Используется для счетчика, который должен охватывать полный диапазон указателя.
Этот тип объявлен в BaseTsd.h следующим образом:
typedef ULONG_PTR SIZE_T;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef LONG_PTR SSIZE_T;
WCHAR, если определен ЮНИКОД, символ CHAR в противном случае.
Этот тип объявлен в WinNT.h следующим образом:
WCHAR, если определен ЮНИКОД, символ CHAR в противном случае.
Этот тип объявлен в WinNT.h следующим образом:
Этот тип объявлен в WinDef.h следующим образом:
typedef unsigned char UCHAR;
Неподписанный HALF_PTR. Используется в структуре, содержащей указатель и два небольших поля.
Этот тип объявлен в BaseTsd.h следующим образом:
Целое число без знака. Диапазон составляет от 0 до 4294967295 десятичного числа.
Этот тип объявлен в WinDef.h следующим образом:
typedef unsigned int UINT;
Этот тип объявлен в BaseTsd.h следующим образом:
Этот тип объявлен в BaseTsd.h следующим образом:
typedef unsigned char UINT8;
Этот тип объявлен в BaseTsd.h следующим образом:
typedef unsigned short UINT16;
Неподписанный INT32. Диапазон составляет от 0 до 4294967295 десятичного числа.
Этот тип объявлен в BaseTsd.h следующим образом:
typedef unsigned int UINT32;
Неподписанный INT64. Диапазон составляет от 0 до 18446744073709551615 десятичного числа.
Этот тип объявлен в BaseTsd.h следующим образом:
typedef unsigned __int64 UINT64;
Unsigned LONG. Диапазон составляет от 0 до 4294967295 десятичного числа.
Этот тип объявлен в WinDef.h следующим образом:
typedef unsigned long ULONG;
64-разрядное целое число без знака. Диапазон составляет от 0 до 18446744073709551615 десятичного числа.
Этот тип объявлен в WinNT.h следующим образом:
Этот тип объявлен в BaseTsd.h следующим образом:
Неподписанный LONG32. Диапазон составляет от 0 до 4294967295 десятичного числа.
Этот тип объявлен в BaseTsd.h следующим образом:
typedef unsigned int ULONG32;
Неподписанный LONG64. Диапазон составляет от 0 до 18446744073709551615 десятичного числа.
Этот тип объявлен в BaseTsd.h следующим образом:
typedef unsigned __int64 ULONG64;
Этот тип объявлен в Winternl.h следующим образом:
Unsigned SHORT. Диапазон составляет от 0 до 65535 десятичных знаков.
Этот тип объявлен в WinDef.h следующим образом:
typedef unsigned short USHORT;
Номер последовательности обновления (USN).
Этот тип объявлен в WinNT.h следующим образом:
typedef LONGLONG USN;
Этот тип объявлен в WinNT.h следующим образом:
16-разрядный символ Юникода. Дополнительные сведения см. в разделе "Наборы символов", используемые шрифтами.
Этот тип объявлен в WinNT.h следующим образом:
typedef wchar_t WCHAR;
Соглашение о вызовах для системных функций.
Этот тип объявлен в WinDef.h следующим образом:
CallBACK, WINAPI и APIENTRY используются для определения функций с помощью соглашения о вызовах __stdcall. Большинство функций в API Windows объявляются с помощью WINAPI. Вы можете использовать CALLBACK для функций обратного вызова, которые вы реализуете, чтобы помочь определить функцию как функцию обратного вызова.
16-разрядное целое число без знака. Диапазон составляет от 0 до 65535 десятичных знаков.
Читайте также: