我正在使用gcc编译器。我正在研究一个经常涉及在单个#define指令中编写语句块的代码。例如以下内容:
#include<stdio.h>
#define DO_RR(x) do { \
for(i=0;i<x; i++) \
printf("%d", i); \
}while(0);
int main() {
int i=0;
DO_RR(5)
return 0;
}
现在我希望能够单步执行DO_RR中的语句。但是当我尝试它时,控件直接从main中的DO_RR语句跳转到下一个语句,而不是单步。无论如何都要实现预处理器块的步进?
答案 0 :(得分:3)
你不能,#define由预处理器扩展而不存在于代码中。
答案 1 :(得分:1)
要补充@ Angelom的答案,您可以使用函数解决方法。将#define
中的任何代码移动到函数中,您就可以单步执行函数调用。
理想情况下,通常情况下,您可以使用内联函数替换整个#define
。