我希望能够强制执行“双重返回”,即具备一个能够从其调用函数中强制性返回的函数(是的,我知道并不总是存在真正意义上的调用函数等)。很明显,我希望通过操作栈来完成这个过程,并且也认为至少在某些不可移植的机器语言方式下是可行的。问题在于,这是否可以以相对干净和可移植的方式实现。
为了提供一个具体的代码片段,我想写出这个函数。
假设
为了提供一个具体的代码片段,我想写出这个函数。
void foo(int x) {
/* magic */
}
为了使以下函数
int bar(int x) {
foo(x);
/* long computation here */
return 0;
}
假设
foo()
可以假定它仅被具有bar签名的函数调用,例如一个int(int)
(因此特别知道其调用者的返回类型),则返回值为1
;长计算未执行。
注意:
- 请不要对我进行讲解,说明这是不好的做法,我只是出于好奇在问。
- 调用函数(在示例中为
bar()
)不得被修改。 它将不知道所调用的函数正在做什么。(同样在示例中,只能修改/* magic */
部分)。 - 如果有帮助,请假设没有进行内联(这可能是不切实际的假设)。