我正在尝试如下代码。
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;
答案 0 :(得分:2)
函数参数在寄存器或堆栈中传递,具体取决于平台的ABI。如果你没有指定参数,那么从被调用函数的视图中仍会有一些随机值(在寄存器或堆栈中)....