IDebugHostType2::Metode IsTypedef (dbgmodel.h)

Metode IsTypedef adalah satu-satunya metode yang mampu melihat apakah jenis adalah typedef. Metode GetTypeKind akan berpura-pura seolah-olah dipanggil pada jenis yang mendasar.

Sintaks

HRESULT IsTypedef(
  bool *isTypedef
);

Parameter

isTypedef

Akan mengembalikan true jika simbol jenis adalah typedef dan false jika tidak.

Nilai kembali

Metode ini mengembalikan HRESULT.

Keterangan

Kode Sampel

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.
    }
}

Jenis apa pun yang merupakan typedef akan bersifat seolah-olah jenisnya adalah jenis akhir yang mendasar typedef. Ini berarti bahwa metode seperti GetTypeKind tidak akan menunjukkan bahwa jenisnya adalah typedef. Demikian juga, GetBaseType tidak akan mengembalikan jenis yang dirujuk oleh definisi. Mereka sebaliknya akan menunjukkan perilaku seolah-olah mereka dipanggil pada definisi akhir yang mendasar typedef. Sebagai contoh:

typedef MYSTRUCT *PMYSTRUCT;
typedef PMYSTRUCT PTRMYSTRUCT;

IDebugHostType untuk 'PMYSTRUCT atau PTRMYSTRUCT akan melaporkan informasi berikut:

  • Metode GetTypeKind akan mengembalikan TypePointer. Jenis akhir yang mendasar MYSTRUCT * memang penunjuk.

  • Metode 'GetBaseType akan mengembalikan jenis untuk MYSTRUCT. Jenis MYSTRUCT * yang mendasar adalah MYSTRUCT.

Satu-satunya perbedaan di sini adalah bagaimana metode khusus typedef pada IDebugHostType2 bertingkah laku. Metode tersebut adalah:

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

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

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

Dalam contoh ini:

  • Metode IsTypedef akan mengembalikan true untuk PMYSTRUCT dan PTRMYSTRUCT
  • Metode GetTypedefBaseType akan mengembalikan MYSTRUCT * untuk PMYSTRUCT dan PMYSTRUCT untuk PTRMYSTRUCT
  • Metode GetTypedefFinalBaseType akan mengembalikan MYSTRUCT * untuk kedua jenis

Persyaratan

Persyaratan Nilai
Header dbgmodel.h

Lihat juga

Antarmuka IDebugHostType2