logo
Литература_1 / photon_old

Более сложная структура

Вам часто надо транспортировать данные более сложных типов, которые ссылаются на внешние по отношению к себе данные (члены типа указателей). При выполнении операций упаковки и распаковки такие члены требуют специальную обработку. Для того, чтобы эти члены были обработаны надлежащим образом, они должны быть описаны в члене fixup элемента транспортного реестра.

Вот более сложная структура:

typedef struct simp2 {

/* Скаляр и ссылка на скалярный массив */

int num_ref_vals;

int *ref_vals;

/* Скалярный массив */

int nums_10[10];

/* Скалярный массив (не эндиан-чувствительный) */

char first_name[10];

/* ССылка на строку */

char *last_name2;

/* Скалярный массив */

short vals_5[5];

/* Член зарегистрированного типа */

Simp1_t simp1_instance;

/* Массив членов зарегистрированного типа */

Simp1_t simp1_array[4];

/* Ссылка на зарегистрированный тип */

Simp1_t *simp1_reference;

/* Скаляр и ссылка на массив зарегистрированных типов */

int num_simps;

Simp1_t *ref_simp1_array;

/* Скаляр и ссылка на массив ссылок зарегистрированных типов */

int num_simp_refs;

Simp1_t **ref_simp1_ref_array;

/* Два скаляра и ссылка на данные произвольного объёма */

short bm_height;

int bm_bpl;

char *bitmap;

/* Нечто, что мы не хотим паковать, но хотим очистить после распаковки */

char *dont_pack_this;

} Simp2_t;

          1. Yandex.RTB R-A-252273-3
            Yandex.RTB R-A-252273-4