3

我正在尝试如下代码。

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;
4

1 回答 1

2

函数参数在寄存器或堆栈中传递,具体取决于您平台的 ABI。如果您不指定参数,则从被调用函数的角度来看,一些随机值(在寄存器中或堆栈上)仍然存在......

于 2013-10-09T05:28:27.657 回答