С С++ и некоторыми вещами Winapi я столкнулся с этим парнем:
#if defined(MIDL_PASS)
typedef struct _LARGE_INTEGER {
#else // MIDL_PASS
typedef union _LARGE_INTEGER {
struct {
DWORD LowPart;
LONG HighPart;
};
struct {
DWORD LowPart;
LONG HighPart;
} u;
#endif //MIDL_PASS
LONGLONG QuadPart;
} LARGE_INTEGER;
Итак, как я его вижу, в зависимости от установленного MIDL_PASS, это либо очень компактная структура с только LONGLONG в ней, либо гораздо более интересный случай, это становится объединением.
В случае, если это объединение, мне все же имеет смысл иметь две возможности доступа, как только LONGLONG в одном блоке, и как только структура с Low и Highpart. Пока все хорошо.
Но я не могу понять, что структура объявляется дважды, идентично. Кажется, что они оба анонимны, но последний доступен через "u".
Теперь на мой вопрос:
Почему две структуры определены (избыточно?), какова цель первой, если я даже не могу ее получить, из-за того, что она не привязана к имени типа/переменной.