STDMETHOD,定義了一個返回HRESULT類型的虛方法。
基本介紹
- 中文名:STDMETHOD
- 定義:返回HRESULT類型的虛方法
- 屬性:程式語言
- 功能:參數傳遞
- 關鍵字:virtual
- 定義方式:宏定義
簡介,示例,
簡介
#define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method
其中,STDMETHODCALLTYPE定義了參數傳遞的方法類型,如下:
#ifdef _WIN32 // Win32 doesn't support __export
#define STDMETHODCALLTYPE __stdcall
#else
#define STDMETHODCALLTYPE __export __stdcall
#endif
這樣當寫一個函式STDMETHOD(op1(int i))
展開後成為: virtual HRESULT __stdcall op1(int i);
這樣就定義了一個虛函式op1。當然了這個虛函式只能放在接口中定義了,所以STDMETHOD宏是用於定義接口用的,放在頭檔案中用。
展開後成為: 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。
#define STDMETHOD_(type,method) virtual type STDMETHODCALLTYPE method
例如: STDMETHOD_ (ULONG, release)()展開後就是 virtual ULONG STDMETHODCALLTYPE release() STDMETHODCALLTYPE 宏展開是 __stdcall。
STDMETHODIMP:定義了一個返回HRESULT的接口函式。
#define STDMETHODIMP HRESULT STDMETHODCALLTYPE
#define STDMETHODIMP HRESULT STDMETHODCALLTYPE
STDMETHODIMP_:定義了一個返回指定類型的接口函式。
#define STDMETHODIMP_(type) type STDMETHODCALLTYPE
#define STDMETHODIMP_(type) type STDMETHODCALLTYPE
示例
#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_()。