簡體   English   中英

功能指針類型轉換

[英]Function Pointers typecasting

我正在嘗試如下代碼。

int TestMethod(int a, int b)
{
    printf("In TestMethod %d, %d \r\n", a, b);
    return 0;
}


int main(void)
{

    void (*ap_cb_function)() = (void(*)())TestMethod;
    ap_cb_function();

    return 0;
}

它適用於gcc編譯器。 這將使用a和b的隨機值打印輸出。 這是如何運作的? 我原本期待一個錯誤:

void (*ap_cb_function)() = (void(*)())TestMethod;

函數參數在寄存器或堆棧中傳遞,具體取決於平台的ABI。 如果你沒有指定參數,那么從被調用函數的視圖中仍然會有一些隨機值(在寄存器或堆棧中)....

暫無
暫無

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

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