Метод IDebugHostType3::IsTypedef (dbgmodel.h)

Метод IsTypedef — единственный метод, способный видеть, является ли тип типом тип. Метод GetTypeKind будет вести себя так, как будто вызывается в базовом типе.

Синтаксис

HRESULT IsTypedef(
  bool *isTypedef
);

Параметры

isTypedef

Возвращает значение true, если символ типа является типизированным и false, если это не так.

Возвращаемое значение

Этот метод возвращает HRESULT.

Замечания

пример кода

ComPtr<IDebugHostType> spType; /* get a type for a typedef (only FindTypeByName 
                                  since the compiler usually only emits base types 
                                  in the symbols for data) */

ComPtr<IDebugHostType3> spType3;
if (SUCCEEDED(spType.As(&spType3)))
{
    bool isTypeDef;
    if (SUCCEEDED(spType3->IsTypedef(&isTypeDef)))
    {
        // isTypeDef indicates whether the type is a typedef.
    }
}

Любой тип, являющийся типом, будет вести себя так, как если тип является окончательным типом, базовым типом. Это означает, что такие методы, как GetTypeKind, не указывают, что тип является типом. Аналогичным образом метод GetBaseType не вернет тип, на который ссылается определение. Вместо этого они указывают на поведение, как если бы они были вызваны на окончательное определение, лежащее в основе typedef. В качестве примера:

typedef MYSTRUCT *PMYSTRUCT;
typedef PMYSTRUCT PTRMYSTRUCT;

IDebugHostType для PMYSTRUCT или PTRMYSTRUCT будут сообщать следующие сведения:

  • Метод GetTypeKind возвращает TypePointer. Последний базовый тип MYSTRUCT * действительно является указателем.

  • Метод GetBaseType возвращает тип для MYSTRUCT. Базовый тип MYSTRUCT * — MYSTRUCT.

Единственное различие здесь заключается в том, как методы typedef для IDebugHostType3 вести себя. Эти методы:

STDMETHOD(IsTypedef)(_Out_ bool* isTypedef) PURE;

STDMETHOD(GetTypedefBaseType)(_Out_ IDebugHostType3** baseType) PURE;

STDMETHOD(GetTypedefFinalBaseType)(_Out_ IDebugHostType3** finalBaseType) PURE;

В этом примере:

  • Метод IsTypedef возвращает значение true для PMYSTRUCT и PTRMYSTRUCT.
  • Метод GetTypedefBaseType возвращает MYSTRUCT * для PMYSTRUCT и PMYSTRUCT для PTRMYSTRUCT
  • Метод GetTypedefFinalBaseType возвращает MYSTRUCT * для обоих типов.

Требования

Требование Ценность
заголовка dbgmodel.h

См. также

интерфейс IDebugHostType3