簡體   English   中英

如何在C中打印無效**的項目?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM