Рекурсивные макросы C
Я строю ядро, в котором у меня есть 192 обработчика IRQ. Мне нужно сопоставить обработчики IRQ "192" с системной глобальной IDT. Из них мне нужно отобразить обработчики в диапазоне 32-192 как IRQ устройства.
MapHandler(unsigned short int vector, unsigned long int functorAddress, IDT *);
Мои устройства-IRQ-обработчики в asm построены как -
%macro decl_IRQ 1
global __irqCallback%1
__irqCallback%1:
PUSHAD
PUSH DWORD 1
CALL HandleDeviceIRQ
ADD ESP, 4
POPAD
IRET
%endmacro
decl_IRQ 32
.
.
;// all the way to
decl_IRQ 192
Теперь мой вопрос: как мне сопоставить все эти 160 IRQ устройств, используя макросы? Должен ли я печатать
import_asm void __irqCallback32();// note that #define import_asm extern "C"
import_asm void __irqCallback33();
// ...
// ...
import_asm void __irqCallback192();
а затем также
MapHandler(...);// 160 times
Пожалуйста, дайте какой-нибудь итерационный метод MACRO, чтобы сделать все это?