8

の call ステートメントで識別子NULLを使用したい場合はどうすればよいですか?gdb

gdbにstdio.hを含めなかったからですか?

私は試しました:call #include <stdio.h>しかし、これはうまくいかないようです。

4

4 に答える 4

6

NULLはC定義であり、次のように定義されています。

#define NULL ((void *) 0)

NULLはCプリプロセッサに置き換えられます((void *) 0)。したがって、コンパイラに渡されることはないため、で使用することはできませんgdb

したがって、Jesterが提案したように実行し、を使用します(void *) 0

于 2012-11-16T16:00:04.117 に答える
5

0またはを使用するだけ(void*)0です。派手なものはありません。

于 2012-11-16T15:23:48.610 に答える
3

現在の 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 でテスト済み。

参照: GDB で #defined 定数を出力するにはどうすればよいですか?

于 2015-07-28T15:16:24.473 に答える