Gcc 如何使用gdb单步定义语句
我正在使用gcc编译器。我正在编写一段代码,该代码经常涉及在单个define指令中编写语句块。例如:Gcc 如何使用gdb单步定义语句,gcc,gdb,Gcc,Gdb,我正在使用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中的语句。然而,当我尝试它时,控件直接从ma
#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语句跳到下一个语句,而不是单步执行。在预处理器块内部是否还有实现单步执行的方法?您不能,定义由预处理器展开,并且不在代码中。为了补充@Angelom的答案,您可以使用函数来解决这个问题。将您可以使用的任何代码从define移动到函数中,您将能够逐步完成函数调用
理想情况下,而且最常见的情况是,您可以用内联函数替换整个define。就这么简单,这也是不使用define而改用内联函数的最佳理由之一。应将其更改为内联void do_rrint x{forint i=0;i@tenfour使用内联是一个很好的主意。但是,对我来说,它违背了使用示例中不明显的定义的目的。@OP:要格式化为代码,只需粘贴、选择并按Ctrl-K缩进4即可spaces@sehe谢谢你的提示