Вообщем, при определении двух структур в def-файле - CRITICAL_SECTION и CRITICAL_SECTION_DEBUG столкнулся с такой проблемой - в CRITICAL_SECTION есть поле типа CRITICAL_SECTION_DEBUG, а в структуре CRITICAL_SECTION_DEBUG есть поле CRITICAL_SECTION... примерно так - Код (Text): typedef struct _CRITICAL_SECTION_DEBUG { WORD Type; WORD CreatorBackTraceIndex; struct _CRITICAL_SECTION *CriticalSection; //<====== !!! LIST_ENTRY ProcessLocksList; DWORD EntryCount; DWORD ContentionCount; DWORD Depth; PVOID OwnerBackTrace[ 5 ]; } CRITICAL_SECTION_DEBUG, *PCRITICAL_SECTION_DEBUG; и Код (Text): typedef struct _CRITICAL_SECTION { PCRITICAL_SECTION_DEBUG DebugInfo; //<===== !!! LONG LockCount; LONG RecursionCount; HANDLE OwningThread; HANDLE LockSemaphore; DWORD Reserved; } CRITICAL_SECTION, *PCRITICAL_SECTION; При компиляции вываливается ошибка о том, что компилятору не известны обе структуры, т.е. они по факту ссылаются друг на друга... Никто не сталкивался с подобным?
steelfactor У меня компилятор ругнулся на переопеределение базовой структуры (смотри include-файл winbase.h).
перед определением _CRITICAL_SECTION_DEBUG впиши: Код (Text): struct _CRITICAL_SECTION; Компилятор будет знать что такая структура есть.
вообще можно было указатель заменить просто на PVOID. но по идее правильно конечно сообщить компилеру что такая структура будет описана в будущем..