我有一个宏,它获取整数的第J位:
#define TWO_TO_THE(POWER) (1 << POWER)
#define JTH_BIT(BITS, J) ((TWO_TO_THE((J-1)) & BITS) != 0)
但是,我不能通过发出命令print JTH_BIT(i,j)
从gdb中使用它,在调试时是否可以使用C中的宏?
答案 0 :(得分:6)
宏由预处理器处理。编译器甚至不知道它们。
但是,如果幸运的话,gcc的选项-g3
可以完成这项工作并生成允许gdb扩展宏的代码。
来自gdb documentation(我强调):
-glevel
[...] 级别3包括额外信息,例如程序中存在的所有宏定义。 使用-g3时,某些 调试程序支持宏扩展。
答案 1 :(得分:2)