Я пишу программу для своего класса, которая ОЧЕНЬ упрощенно имитирует способ, которым операционная система будет обрабатывать прерывание.
В 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: подписанное значение не является ни массивом, ни указателем». Кто-нибудь знает, что я делаю не так?
Спасибо за помощь.
редактировать: разобрался! У меня был INTERRUPT_TABLE выше функций, которые я пытался вызвать, поэтому они автоматически объявлялись как целые числа