Мужики, чет запутался маленько... помогите осознать)
первая проблема:
определить так нельзя:
typedef struct _TYPE_A
{
LPSTRUCT_B b;
} STRUCT_A, *LPSTRUCT_A;
typedef struct _TYPE_B
{
LPSTRUCT_A a;
} STRUCT_B, *LPSTRUCT_B;
так:
typedef struct _TYPE_A
{
struct _TYPE_B *b;
} STRUCT_A;
typedef struct _TYPE_B
{
struct _TYPE_A *a;
} STRUCT_B;
- будет правильно? или есть другие способы
и вторая проблема.
выделена область памяти:
PVOID buff;
мне надо сформировать указатель(PVOID) на некоторые ее элементы с шагом size_of_block = 1кб.
PVOID buff_i = buff + i*size_of_block;
есествено, компилятор ругается (хотя что тут непонятного?
сложить два числа)
напрашивается написать:
PVOID buff_i = (PVOID) ( (DWORD)buff + i*size_of_block);
или
PVOID buff_i = (PCHAR)buff + i*size_of_block;
но вот насколько это корректно? первая запись мне не нравится. вторая почему то тоже.
как вообще принято делать? и возможные проблемы на x64? (за выравниванием на границу 4к я слежу при выделении памяти)
и чем последнее будет отличатся от
PVOID buff_i = (PWORD)buff + i*size_of_block;
PVOID buff_i = (PDWORD)buff + i*size_of_block;
?