次の方法で共有


IDebugHostType2::IsTypedef メソッド (dbgmodel.h)

IsTypedef メソッドは、型が typedef であるかどうかを確認できる唯一のメソッドです。 GetTypeKind メソッド は、基になる型で呼び出されたかのように動作します。

構文

HRESULT IsTypedef(
  bool *isTypedef
);

パラメーター

isTypedef

型シンボルが typedef の場合は 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 である型は、型が typedef の基になる最終的な型であるかのように動作します。 つまり、GetTypeKind などのメソッドは、型が typedef であることを示しません。 同様に、GetBaseType メソッド は、定義が参照する型を返しません。 代わりに、typedef の基になる最終的な定義で呼び出されたかのように動作することを示します。 例として次に示します。

typedef MYSTRUCT *PMYSTRUCT;
typedef PMYSTRUCT PTRMYSTRUCT;

'PMYSTRUCT または PTRMYSTRUCT のいずれかの IDebugHostType は、次の情報を報告します。

  • GetTypeKind メソッドは TypePointer を返します。 最終的な基になる型 MYSTRUCT * は、実際にはポインターです。

  • GetBaseType メソッドは、MYSTRUCT の型を返します。 MYSTRUCT * の基になる型は MYSTRUCT です。

ここでの唯一の違いは、IDebugHostType2 の typedef 固有のメソッドの動作です。 これらのメソッドは次のとおりです。

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

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

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

この例では、次の操作を行います。

  • ISTypedef メソッドは、PMYSTRUCT と PTRMYSTRUCT の両方に対して true を返します
  • GetTypedefBaseType メソッドは、PMYSTRUCT の場合は MYSTRUCT * を、PTRMYSTRUCT の場合は PMYSTRUCT を返します。
  • GetTypedefFinalBaseType メソッドは、両方の型の MYSTRUCT * を返します

必要条件

要件 価値
ヘッダー dbgmodel.h

関連項目

IDebugHostType2 インターフェイス