C语言中的宏定义,有着各种各样的好处和坏处,可谓让人有爱有恨。在大型的工程项目中,为了简洁,为了封装,宏的应用必不可少。但是在调试问题时,因为宏定义是被预定义处理的,所以不会有任何的编译符号和调试信息。这样给调试宏定义时,带来了很大的困难。对于开发人员来说,除了直接肉眼去看宏定义,自己来展开宏定义去确定问题,是否还有其它手段来调试宏定义吗?
本文介绍两种调试宏定义的小技巧:
第一个方法是通过gcc -E产生预编译后的源代码,即源代码经过预编译后的结果,所有的预编译动作都已完成。如头文件的插入,宏定义的展开。
如下面的代码:
- #include <</span>stdlib.h>
- #include <</span>stdio.h>
- #define MACRO1(x)(++(x))
- #define MACRO2(x)(MACRO1(x)+100)
- #define MACRO3(x)(MACRO2(x)+200)
- int main(void)
- {
<