С C ++ и некоторыми вещами 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 или нет, это либо очень компактная структура с толькоДОЛГОСРОЧНО в этом, или в гораздо более интересном случае, это становится объединением.
В случае, если это объединение, для меня все еще имеет смысл иметь два варианта доступа, один раз ДОЛГОЛЕННО в одном куске,и однажды структура с Low и Highpart.Пока все хорошо.
Но я не могу иметь никакого смысла из-за того, что структура объявлена дважды, идентично.Кажется, они оба анонимны, но последний доступен через "u".
Теперь на мой вопрос:
Почему две структуры определены (избыточно?), Какова цельиз первого, если я даже не могу получить к нему доступ из-за отсутствия привязки к какому-либо имени типа / переменной.