簡體   English   中英

C 中的回調函數沒有 printf

[英]Callback function in C does not printf

我正在嘗試 C 中的回調函數,但我不確定為什么,但出於某種原因 printf 在回調函數中不起作用。 例如:

#include <stdio.h>

void call_this_method()
{
    printf("call_this_method called\n");
}
void callback(void (*method))
{
    printf("callback called\n");
    (void) method;
}

int main(int argc, const char * argv[])
{
    callback(call_this_method);
}

如果我嘗試運行它,只有“回調調用”會在控制台中打印出來; “call_this_method called”不會被打印出來。 這是為什么?

首先void (*method)是一個指向任何東西的普通指針。 它等於void *method 您應該將其聲明為指向函數void (*method)(void)的指針。

其次, (void) method不調用任何東西。 它只是將method評估為自己的值,然后丟棄該值(由於強制轉換)。 通過上述修復,您可以像調用任何其他函數一樣調用它:

method();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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