編譯器錯誤 C3714
'method': 事件處理程式方法必須具有與來源 'method' 相同的呼叫慣例
您已定義未使用與來源事件方法相同的呼叫慣例的事件處理程式方法。 若要修正此錯誤,請為事件處理程式方法提供與來源事件方法相同的呼叫慣例。 例如,在下列程式代碼中,進行 和 event1
比對的handler1
呼叫慣例(__cdecl或__stdcall或其他)。 從這兩個宣告中移除呼叫慣例關鍵詞也會解決問題,並造成 event1
和 handler1
預設為 thiscall 呼叫慣例。 如需詳細資訊,請參閱 呼叫慣例 。
下列範例會產生 C3714:
// C3714.cpp
// compile with: /c
// processor: x86
[event_source(native)]
class CEventSrc {
public:
__event void __cdecl event1();
// try the following line instead
// __event void __stdcall event1();
};
[event_receiver(native)]
class CEventRec {
public:
void __stdcall handler1() {}
void HookEvents(CEventSrc* pSrc) {
__hook(&CEventSrc::event1, pSrc, &CEventRec::handler1); // C3714
}
void UnhookEvents(CEventSrc* pSrc) {
__unhook(&CEventSrc::event1, pSrc, &CEventRec::handler1); // C3714
}
};