gpt4 book ai didi

c++ - 这个宏有什么作用?

转载 作者:太空狗 更新时间:2023-10-29 20:15:04 25 4
gpt4 key购买 nike

我正在做一个项目,并使用过去几年的项目来帮助我获得有关如何做某些事情的想法。请注意,我不是盲目复制,但书中有很多内容没有。无论如何,这是我不明白的宏:

#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 之前的行是做什么的呢?我一直在寻找整个项目,找不到答案。在头脑 Storm 期间看这个项目之前,我想到了类似的东西,但没有最后一行。

如果有人能告诉我我认为我挂掉的部分是对还是错,如果有人能告诉我这条神秘的线是做什么的,我将不胜感激。

最佳答案

让我们假设 numIVT=1。宏的最后一部分将扩展为:

IVTEntry entry1(1, int1); 

这意味着您正在定义一个 IVTEntry 类型的对象,并使用 1int1(在同一宏中声明的函数)作为其构造函数参数。

关于c++ - 这个宏有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14471004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com