gpt4 book ai didi

c - 为什么函数指针需要返回类型?

转载 作者:行者123 更新时间:2023-11-30 18:17:18 24 4
gpt4 key购买 nike

为什么以下内容有效

int (*func)(int);

而不是

(*func)(int);

第一条语句不是多余的吗,特别是考虑到方法签名中未使用返回类型?

最佳答案

要生成对函数的调用,编译器必须知道返回类型。无论是直接调用还是通过函数指针进行调用都是如此。

作为一个实际示例,请考虑 x86 平台:

  • int 值在 eax 寄存器中返回,因此编译器必须生成代码以从那里获取返回值。
  • double 值在浮点堆栈上返回,因此编译器必须生成代码以从那里获取返回值。
  • struct 值根本不返回;该函数采用隐式输出参数(结构指针)。编译器必须生成代码来保留堆栈空间并将其地址传递给函数。

如果编译器不知道返回类型,则无法编译对该函数的调用。

关于c - 为什么函数指针需要返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57564639/

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