STDMETHOD(Evaluate)(THIS_ BSTR expr, BSTR FAR* pBSTR) PURE;
最近在使用這個函式的時候不知道這個函式的引數是什么意思,更不知道這個函式是如何使用的,想請問哪位大俠幫小弟我解答一下,下地不勝感激。
uj5u.com熱心網友回復:
STDMETHOD:定義了一個回傳HRESULT型別的虛方法。#define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method
其中,STDMETHODCALLTYPE定義了引數傳遞的方法型別,如下:
#ifdef _WIN32 // Win32 doesn't support __export
#define STDMETHODCALLTYPE __stdcall
#else
#define STDMETHODCALLTYPE __export __stdcall
#endif [1]
這樣當寫一個函式STDMETHOD(op1(int i))
展開后成為: virtual HRESULT __stdcall op1(int i);
這樣就這義了一個虛函式op1。當然了這個虛函式只能放在介面定義中了,所以STDMETHOD宏是用于定義介面用的,放在頭檔案中用。
STDMETHOD_:定義了一個回傳指定型別的虛方法。
#define STDMETHOD_(type,method) virtual type STDMETHODCALLTYPE method
例如: STDMETHOD_ (ULONG, release)()展開后就是 virtual ULONG STDMETHODCALLTYPE release() STDMETHODCALLTYPE 宏展開是 __stdcall。
STDMETHODIMP:定義了一個回傳HRESULT的介面函式。
#define STDMETHODIMP HRESULT STDMETHODCALLTYPE
STDMETHODIMP_:定義了一個回傳指定型別的介面函式。
#define STDMETHODIMP_(type) type STDMETHODCALLTYPE
2
示例
編輯
#undef INTERFACE
#define INTERFACE ISomeInterface
DECLARE_INTERFACE_(ISomeInterface, IUnknown)
{
STDMETHOD(QueryInterface) (THIS_REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
STDMETHOD(GetSomething) (THIS_
REF(IOtherInterface*) pOther) PURE;
};
STDMETHOD()包含virtual關鍵字,回傳型別和呼叫規范。STDMETHOD_()也一樣,除非你指定不
同的回傳型別。PURE擴展了C++的“=0”,使此函式成為一個純虛擬函式。
STDMETHOD()和STDMETHOD_()有對應的宏用于方法實作——STDMETHODIMP和STDMETHODIMP_()。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/114462.html
上一篇:Python基礎-字串
