我正在为我的课程编写一个程序,以非常简化的方式模拟操作系统处理中断的方式。
在C语言中,我声明了一个数组INTERRUPT_TABLE[]
:
typedef void (*FN_TYPE)();
extern FN_TYPE INTERRUPT_TABLE[];
我希望设置数组中的每个位置指向程序其他位置包含的不同函数的开头 - 例如,INTERRUPT_TABLE [0]
应该指向 handle_trap()
函数的开头。
我以为可以简单地写:INTERRUPT_TABLE[0] = handle_trap;
但是这样不起作用。我收到了一个编译器错误,说“kernel.c:134:error:subscripted value is neither array nor pointer”。有人知道我做错了什么吗?
谢谢帮忙。
编辑:问题解决了!我的 INTERRUPT_TABLE 定义在我试图调用的函数之上,所以它们被自动声明为整数。
INTERRUPT_TABLE[0] = &handle_trap;
。 - Tugrul Ates