功能指针类型转换

时间:2013-10-09 05:21:54

标签: c

我正在尝试如下代码。

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;

1 个答案:

答案 0 :(得分:2)

函数参数在寄存器或堆栈中传递,具体取决于平台的ABI。如果你没有指定参数,那么从被调用函数的视图中仍会有一些随机值(在寄存器或堆栈中)....

相关问题