[英]How can you print an item that is void** data in C?
在嘗試為C堆棧構建測試裝備時,我遇到了如何正確顯示它的問題。 我已經檢查了六本書,它們都有用於從堆棧中推入和彈出的方法,但是都沒有給出如何實際使用例程的示例。 有人可以告訴我該模式,以便我編寫debug printf語句嗎?
彈出調用使用以下結構:
{ 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");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.