【发布时间】:2021-01-13 08:01:37
【问题描述】:
int f(int a, int b){
return a+b;
}
int main(){
f(1,2);
}
本例中,调用f函数时,没有具体的变量存储a 和b的相加结果。我的问题是:a+b 的结果将存储在哪里?
【问题讨论】:
-
在典型的 ABI 中,
int将在 CPU 寄存器中返回。对于不适合寄存器的较大返回类型,实际上调用者提供的内存中有一个隐藏的void*参数;该函数将其返回值放入该内存中。有关详细信息,请参阅编译器的文档 - 确切的机制取决于实现。 -
这里的答案因编译器和操作系统而异。 C++ 标准没有具体要求。
标签: c++ stack callstack function-call