缺少宏的C ++函数;

问题描述

我在用旧的Borland c ++标准编写uni的赋值时遇到麻烦。
所以我有一个像这样使用的宏 HAS PREPAREENTRY(9,0);其中第一个参数的取值范围始终为0到255,第二个参数的取值范围始终为0或1。除非特别说明,否则无需赘述,应该为中断向量表中的每个条目自动生成唯一的中断函数。 我的代码如下:

#define PREPAREENTRY(ivtNo,oldInterrupt)         \
extern IVTEntry ivtEntry##ivtNo;                  \
void interrupt interrupt##ivtNo(...){             \
    ivtEntry##ivtNo.signal();                     \
    if(oldInterrupt)                              \
        ivtEntry##ivtNo.oldInterrupt();           \
}                                                 \
IVTEntry ivtEntry##ivtNo(ivtNo,interrupt##ivtNo);

(我尝试不将;放在宏定义的最后一行,但是仍然会给我同样的错误
当我不使用宏并使用ivtNo9切换每个oldInterrupt0时,代码将起作用。但是,当我使用宏时,代码无法编译,并且给了我这个错误Error ..\src\keyevent.cpp 17: Statement missing ; in function interrupt interrupt9(...)。我尝试过移动很多东西并多次编写它,但这总是该错误missing )错误
如果需要,我会为您提供更多详细信息,但是如果有人知道可能导致这些错误的原因,我将不胜感激!

解决

我在宏内部使用的IVTEntry类内部的宏参数和函数具有相同的名称。因此,宏名为ivtEntry9.0();而不是ivtEntry9.oldInterrupt();

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)