C 在使用gdb调试源代码时,如何判断宏是否已定义?

C 在使用gdb调试源代码时,如何判断宏是否已定义?,c,gdb,C,Gdb,我想知道宏A是否已定义。在gdb中是否有任何命令可以使用。在编译时,我们传递-gdwarf-2和-g3标志,以确保编译器在调试信息中包含有关预处理器宏的信息 例如,g++-gdwarf-2-g3 program.cpp-o program 使用-g3和gdb发行版编译: struct tree{ #ifdef A #define TREE_GET(x,y) &x->y #else #define TREE_GET(x,y) x->y #

我想知道宏A是否已定义。在gdb中是否有任何命令可以使用。

在编译时,我们传递-gdwarf-2和-g3标志,以确保编译器在调试信息中包含有关预处理器宏的信息

例如,
g++-gdwarf-2-g3 program.cpp-o program


使用
-g3
和gdb发行版编译:

struct tree{
#ifdef A
   #define TREE_GET(x,y)        &x->y
#else
   #define TREE_GET(x,y)        x->y
#endif
}; 

从:

-格雷维尔

级别3包括额外信息,例如程序中存在的所有宏定义。某些调试器在使用-g3时支持宏扩展

从:

信息宏[-a |-all][-]宏

显示命名宏的当前定义或所有定义,并描述建立该定义的源位置或编译器命令行。可选的双破折号表示非C类宏的参数处理结束和宏开始,其中宏可能以连字符开头


除了定义
TREE\u GET
,还可以设置一个全局变量吗?虽然您无法检查
A
,或
TREE\u GET
的定义,但您可以检查变量没有问题。。。
info macro A