我正在做一个项目,并使用过去几年的项目来帮助我获得关于如何做某些事情的想法。请注意,我不是盲目地抄袭,而是书中没有很多东西。无论如何,这是我不明白的宏:
#define PREPAREENTRY(numIVT,oldINT) \
void interrupt int##numIVT(...){\
IVTEntry::entries[##numIVT]->signalAll();\
if (oldINT) IVTEntry::entries[##numIVT]->callOld();}\
IVTEntry entry##numIVT(##numIVT,int##numIVT);
#endif
我不完全确定,但我想我掌握了大部分内容。因此,PREPAREENTRY 得到两个值,numIVT(IV 表中的数字)和 OldNT(旧中断)。
然后它会创建一个名为 numIVT 的中断函数,我稍后可以将其设置为某个中断的中断函数,或者当该中断出现时会发生什么。
新的中断函数根据 numIVT 从对象数组中调用某个对象的 signalAll()。然后它检查它是否应该调用旧的中断函数并调用它。
新的中断函数到此结束。
但是#endif 之前的行是做什么的?我一直在寻找整个项目,但找不到答案。在头脑风暴期间看这个项目之前,我想到了类似的东西,但没有最后一行。
如果有人能告诉我我认为我被挂断的部分是对还是错,如果有人能告诉我这条神秘的线是做什么的,那将不胜感激。