在尝试为 C 堆栈构建测试平台时,我遇到了如何正确显示它的问题。我检查了六本书,它们都有一种向/从堆栈推送和弹出的方法,但没有一个举例说明您如何实际使用这些例程。有人可以告诉我模式,所以我可以编写调试 printf 语句吗?
对 pop 的调用使用以下结构:
{ struct Element *next; void *data; }
弹出功能是:
int pop ( tElement **stack, void **data )
如何打印数据项。
在尝试为 C 堆栈构建测试平台时,我遇到了如何正确显示它的问题。我检查了六本书,它们都有一种向/从堆栈推送和弹出的方法,但没有一个举例说明您如何实际使用这些例程。有人可以告诉我模式,所以我可以编写调试 printf 语句吗?
对 pop 的调用使用以下结构:
{ struct Element *next; void *data; }
弹出功能是:
int pop ( tElement **stack, void **data )
如何打印数据项。
您可以打印出指针值:
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");
}
}