__stdcall的函数是不是不能用函数指针?

wtogether 2005-04-19 02:59:44
写了一个程序,里面用到函数指针,如果指向的函数是__cdecl的,那么就没问题,但是只要是__stdcall的,就崩溃了,错误提示居然是0x00000000指令引用的0x00000000内存不能读
函数指针默认是__cdecl的,而指向__stdcall后,多参数的函数入口就不知道怎么搞的错位了,例如这两个函数:
void __stdcall Write(const char *);
void __stdcall WriteEx(const char *, int);
然后用指针指向它们:
void (*func)();
if (i)
{
func = &WriteEx;
}
else
{
func = &Write;
}
我用错误日志跟踪,发现第二个函数的第二个参数,指定本来是1,但是日志里却是4007417,这是怎么回事?
这有什么办法解决么?
...全文
448 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wtogether 2005-04-20
  • 打赏
  • 举报
回复
怎么昨天没有结贴?提交的时候asp程序出错了,我以为成功了呢
CMyMfc(星际人生:=E.F=FlyForEver)说的就是正确答案啊
Flood1984 2005-04-19
  • 打赏
  • 举报
回复
不过可以把你的结论说出来大家分享一下呀,
也不浪费了这个帖子。
Flood1984 2005-04-19
  • 打赏
  • 举报
回复
接分
oyljerry 2005-04-19
  • 打赏
  • 举报
回复
jf
kobefly 2005-04-19
  • 打赏
  • 举报
回复
这么快就解决了啊
呵呵

wtogether 2005-04-19
  • 打赏
  • 举报
回复
呵呵,跟我想的一样,结贴,真是浪费啊
CMyMfc 2005-04-19
  • 打赏
  • 举报
回复
void (__stdcall *func)(const char *);
void (__stdcall *funcExt)(const char *, int);

func = Write;
funcExt = WriteEx;
wtogether 2005-04-19
  • 打赏
  • 举报
回复
晕,才发了贴就自己解决了,来个人顶顶

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧