gpt4 book ai didi

c - 函数指针类型转换

转载 作者:行者123 更新时间:2023-12-03 04:15:37 26 4
gpt4 key购买 nike

我正在尝试如下代码。

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。如果您不指定参数,从被调用函数的角度来看,一些随机值(在寄存器中或堆栈上)仍然会存在......

关于c - 函数指针类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19263738/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com