中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-17 00:39
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 函数指针,为什么这么写是错误的 查看 748 回复 1
楼 主 函数指针,为什么这么写是错误的 发表于 2008-04-25 09:50 ·  中国 河北 石家庄 裕华区 电信
初级用户
积分 22
发帖 8
注册 2007-10-11 10:49
UID 99432
性别 男
来自 石家庄
状态 离线
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 惭愧,我写错了 发表于 2008-04-25 10:04 ·  中国 河北 石家庄 裕华区 电信
初级用户
积分 22
发帖 8
注册 2007-10-11 10:49
UID 99432
性别 男
来自 石家庄
状态 离线
WORD* ptr = (WORD *)ptr_hello;
应该是 WORD* ptr = (WORD *)(&ptr_hello);
论坛跳转: