我收到了一些供应商提供的用C语言编写的驱动程序代码,它在DOS系统上运行,用于访问硬件。我正在努力弄清楚这段代码的作用,但目前进展不大。特别是我无法理解以下代码:
void (interrupt *oldcan)(void);
void interrupt far can_isr(void)
{
/* function body */
}
我猜测第一行定义了一个函数指针,但我从未见过 interrupt
这个词,我猜它是一些DOS API函数。我以前从未使用过DOS,而上面的函数定义看起来像它有三个返回类型 - void
,interrupt
和 far
,这显然是不可能的。实际上,该函数具有void返回类型,但是 interrupt far
的含义是什么?任何帮助都将不胜感激。
far
与被调用函数的内存地址有关,超出了正常页面的范围。 - Richard J. Ross III