我正在使用Kinetis Design Studio, Version: 3.2.0
#define DECODE_QSTR qstr qst = 0; \
do { \
qst = (qst << 7) + (*ip & 0x7f); \
} while ((*ip++ & 0x80) != 0)
当我踏入行DECODE_QSTR;
时,它不会进入do-while
循环。
MARK_EXC_IP_SELECTIVE();
DECODE_QSTR;
PUSH(mp_load_name(qst));
DISPATCH();
有没有办法启用包含多行代码的步进MACRO?
答案 0 :(得分:3)
不,没有办法做到这一点。这可能是DWARF的限制,也可能是编译器的限制,具体取决于您的视图。
理论上,编译器可以在行表中为宏的每个相关部分发出条目。但是,我不知道有任何编译器执行此操作(这是编译器限制部分)。而且,如果它完成了,它仍然会留下如何在步进时看到宏参数的问题(DWARF没有提供任何方法来执行此操作)。
解决方法是使用内联函数,但当然并非总是可行。