gpt4 book ai didi

c++ - 似乎无法为 _set_se_translator 提供正确的参数

转载 作者:行者123 更新时间:2023-11-30 02:09:12 25 4
gpt4 key购买 nike

我正在尝试实现 _set_se_translator。我尝试编写一个具有以下签名的函数(来 self 的 .cpp 文件 - 当然,我的 .h 文件中有一个类似的签名):

 void CIntersonBScan::trans_func(unsigned int u, EXCEPTION_POINTERS* pExp)

然后我通过编写以下代码将此函数作为参数传递给 _set_se_translator:

 _set_se_translator(&CIntersonBScan::trans_func);

然后我编译我的代码并收到以下错误消息:

错误 C2664:“_set_se_translator”:无法将参数 1 从“void(__thiscall CIntersonBScan::*)(unsigned int,EXCEPTION_POINTERS *)”转换为“_se_translator_function”

在eh.h文件中,我找到了_se_translator_function的定义如下:

 typedef void (__cdecl *_se_translator_function)(unsigned int, struct _EXCEPTION_POINTERS*);

我尝试改变 trans_func 的签名,但仍然收到相同的错误消息。我已经设置了/EHa 编译选项。如何创建一个真正匹配 _se_translator_function 签名的函数?

最佳答案

typedef void (__cdecl *_se_translator_function)(unsigned int, struct _EXCEPTION_POINTERS*);

这必须是自由函数,或静态成员函数 - 它不能是非静态成员函数(因为它们有一个隐藏的隐式 this 参数 - 并且不能匹配 _se_translator_function)。

关于c++ - 似乎无法为 _set_se_translator 提供正确的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5670038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com