2012-11-16 257 views

回答

2

只需使用0(void*)0。沒有什麼花哨。

1

NULL是C限定,某處定義爲:

#define NULL ((void *) 0) 

NULL是由C預處理器替換爲((void *) 0)。所以它永遠不會傳遞給編譯器,所以你不能在gdb中使用它。

這樣做Jester建議,並只使用(void *) 0

+0

謝謝你,我很習慣使用NULL ....看來我要離開的背後它在gdb。 – CDT

+0

NULL現在可以使用'-ggdb3':http://stackoverflow.com/a/31680508/895245 –

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?

+0

選項'-g3'也可以。 – alk

相關問題