0

在尝试为 C 堆栈构建测试平台时,我遇到了如何正确显示它的问题。我检查了六本书,它们都有一种向/从堆栈推送和弹出的方法,但没有一个举例说明您如何实际使用这些例程。有人可以告诉我模式,所以我可以编写调试 printf 语句吗?

对 pop 的调用使用以下结构:

{ struct Element *next; void *data; }

弹出功能是:

int pop ( tElement **stack, void **data )

如何打印数据项。

4

1 回答 1

4

您可以打印出指针值:

void print_data (void **data) {
    printf("%p", data);
    if (data) printf(", *%p", *data);
}

或者,您可以向数据结构的用户提供回调挂钩,为您提供打印功能:

void pretty_print_data (void **data, void (*print_callback)(void **)) {
    printf("%p%s", data, (data ? "" : ": "));
    if (data) printf(", *%p: ", *data);
    if (print_callback) print_callback(data);
}

提供回调的程序员知道data应该是什么类型:

void print_point (void **data) {
    if (data && *data) {
        point *p = *data;
        printf("(%d, %d)", p->x, p->y);
    } else {
        printf("nil");
    }
}
于 2013-06-20T22:13:31.660 回答