call setbuf(stdout,NULL):当前上下文中没有符号“NULL”

时间:2012-11-16 14:31:51

标签: null gdb

如果我想在NULL的调用声明中使用标识符gdb,我该怎么办?

是因为我没有在gdb中包含stdio.h吗?

我尝试过:call #include <stdio.h>但这似乎不起作用。

3 个答案:

答案 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进行测试。

另请参阅:How do I print a #defined constant in GDB?