Я часто сталкиваюсь с некоторыми определениями структур Win32API (но не ограничиваясь ими), которые имеют член cbSize
, как в следующем примере.
typedef struct _TEST {
int cbSize;
// other members follow
} TEST, *PTEST;
А потом мы используем это так:
TEST t = { sizeof(TEST) };
...
или
TEST t;
t.cbSize = sizeof(TEST);
...
Мое первоначальное предположение состоит в том, что это потенциально может быть использовано для управления версиями. DLL, которая получает указатель на структуру, подобную этой, может проверить, имеет ли элемент cbSize
ожидаемое значение, с которым была скомпилирована DLL. Или проверить правильность упаковки для структуры. Но я бы хотел сюда от вас.
Каково назначение элемента cbSize
в некоторых структурах C ++ в Win32API?