中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-10-31 12:20
共 47,815 主题排行 / 349,930 发帖 / 今日 0 篇 / 48,290 会员排行
DOS开发编程 & 发展交流 (开发室) » 函数指针,为什么这么写是错误的
可打印版本  868 / 1
第1楼 misssir 发表于 2008-04-25 09:50
初级用户 发帖 8 积分 22 来自 石家庄
函数指针,为什么这么写是错误的
void hello()
{
printf("hello every one");
}

#define BYTE unsigned char
#define WORD unsigned int
#define DWORD unsigned long

DWORD ptr_hello;

void main()
{
WORD* ptr = (WORD *)ptr_hello;
ptr[1] = FP_SEG(&hello);
ptr[0] = FP_OFF(&hello);

__asm
{
call ptr_hello
}
while(!kbhit());
}

我想做一下实验,结果是编译通过,不能执行,说CPU遇到无效的命令,请教为什么这样不行呢
第2楼 misssir 发表于 2008-04-25 10:04
初级用户 发帖 8 积分 22 来自 石家庄
惭愧,我写错了
WORD* ptr = (WORD *)ptr_hello;
应该是 WORD* ptr = (WORD *)(&ptr_hello);
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023