Поделиться через


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

Метод IsTypedef является единственным методом, который может определить, является ли тип typedef. Метод 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<IDebugHostType2> spType2;
if (SUCCEEDED(spType.As(&spType2)))
{
    bool isTypeDef;
    if (SUCCEEDED(spType2->IsTypedef(&isTypeDef)))
    {
        // isTypeDef indicates whether the type is a typedef.
    }
}

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

typedef MYSTRUCT *PMYSTRUCT;
typedef PMYSTRUCT PTRMYSTRUCT;

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

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

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

Единственное различие здесь заключается в том, как ведут себя методы определения типа в IDebugHostType2 . Ниже приведены следующие методы:

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

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

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

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

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

Требования

Требование Значение
Заголовок dbgmodel.h

См. также раздел

Интерфейс IDebugHostType2