在BC3.1中如何对函数指针进行强制类型转换(键盘中断的设置)(115分)

  • 主题发起人 主题发起人 emtf
  • 开始时间 开始时间
E

emtf

Unregistered / Unconfirmed
GUEST, unregistred user!
用BC3.1设置键盘中断程序,部分源码如下:
...
void far interrupt NewInt9()
{
...
}
...
setvect(9,NewInt9);
...
编译错误提示如下:
Cannot convert 'void (interrupt *)()' to 'void (interrupt far*)(...)'
Type mismatch in parameter '__isr' in call to 'setvect(int,void (interrupt far*)(...))'
问如何对NewInt9()进行强制类型转换,最好能说明原理.
谢谢!
 
这里不是简单的类型转换问题了, 参数中要求的是一个16位指针, 你给的是一个32位指针
当然无法通过. 很难进行转换. 如果你在16位实模式下编程的话(DOS程序), 可以尝试
将你的NewInt9函数与setvect函数进行段对齐(使它们处于同一程序段), 然后传入
NewInt9段对齐后新的偏移量.
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
724
import
I
I
回复
0
查看
676
import
I
后退
顶部