如果我想在NULL
的调用声明中使用标识符gdb
,我该怎么办?
是因为我没有在gdb中包含stdio.h吗?
我尝试过:call #include <stdio.h>
但这似乎不起作用。
答案 0 :(得分:2)
只需使用0
或(void*)0
即可。没什么好看的。
答案 1 :(得分:2)
NULL
是一个C定义,在某处定义为:
#define NULL ((void *) 0)
NULL
被C预处理器替换为((void *) 0)
。所以它永远不会传递给编译器,所以你不能在gdb
中使用它。
建议使用 Jester ,然后使用(void *) 0
。
答案 2 :(得分:0)
当前GCC和GDB可以看到定义,但您必须使用-ggdb3
进行编译,-g
是不够的。
输入程序:
#include <stdio.h>
#define ABC 123
int main() {
return 0;
}
GDB:
# start is required.
start
print ABC
print NULL
输出:
$1 = 123
$2 = (void *) 0x0
在Ubuntu 14.04上使用GCC 4.8和GDB 7.7.1进行测试。