Непонятки при определении структур

Тема в разделе "WASM.BEGINNERS", создана пользователем steelfactor, 10 дек 2007.

  1. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Вообщем, при определении двух структур в def-файле - CRITICAL_SECTION и CRITICAL_SECTION_DEBUG столкнулся с такой проблемой - в CRITICAL_SECTION есть поле типа CRITICAL_SECTION_DEBUG, а в структуре CRITICAL_SECTION_DEBUG есть поле CRITICAL_SECTION... примерно так -
    Код (Text):
    1. typedef struct _CRITICAL_SECTION_DEBUG {
    2.     WORD   Type;
    3.     WORD   CreatorBackTraceIndex;
    4.     struct _CRITICAL_SECTION *CriticalSection; //<====== !!!
    5.     LIST_ENTRY ProcessLocksList;
    6.     DWORD EntryCount;
    7.     DWORD ContentionCount;
    8.     DWORD Depth;
    9.     PVOID OwnerBackTrace[ 5 ];
    10. } CRITICAL_SECTION_DEBUG, *PCRITICAL_SECTION_DEBUG;
    и
    Код (Text):
    1. typedef struct _CRITICAL_SECTION {
    2.     PCRITICAL_SECTION_DEBUG DebugInfo;       //<===== !!!
    3.     LONG LockCount;
    4.     LONG RecursionCount;
    5.     HANDLE OwningThread;
    6.     HANDLE LockSemaphore;
    7.     DWORD Reserved;
    8. } CRITICAL_SECTION, *PCRITICAL_SECTION;
    При компиляции вываливается ошибка о том, что компилятору не известны обе структуры, т.е. они по факту ссылаются друг на друга... Никто не сталкивался с подобным?
     
  2. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    steelfactor
    У меня компилятор ругнулся на переопеределение базовой структуры (смотри include-файл winbase.h).
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    перед определением _CRITICAL_SECTION_DEBUG впиши:
    Код (Text):
    1. struct _CRITICAL_SECTION;
    Компилятор будет знать что такая структура есть.
     
  4. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    n0name
    Пасибо! (: заработала....
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    вообще можно было указатель заменить просто на PVOID.
    но по идее правильно конечно сообщить компилеру что такая структура будет описана в будущем..