是否有可能以某种方式引用我从函数返回的值?一个例子更好地解释了:
CFTypeRef foo()
{
CFTypeRef valueRef = NULL;
bar(&valueRef); // fills valueRef with some data
return valueRef;
}
我认为将其重写为:
会很好CFTypeRef foo()
{
bar(&__retvalue);
}
当然__retvalue
会是一些神奇的象征。这有意义吗?有可能吗?如果没有,为什么?
答案 0 :(得分:3)
这是不可能的。在较低级别,返回值通常在处理器寄存器中返回,因此无法作为参考传递。
答案 1 :(得分:2)
a)这是有道理的。 b)没有这样的魔术令牌。 c)“如果没有,为什么”?问题很奇怪......为什么没有这样一个神奇的象征?因为语言设计者从未想过它,或者想到它,并不认为添加到语言是一件好事。 (有人提到返回值通常保存在寄存器中,但这是无关紧要的;编译器可以生成代码以从内存变量加载该寄存器,就像当前foo中所发生的那样)。
答案 2 :(得分:1)
可能不是。
如果你想让代码更清洁,也许你可以定义一个宏?
答案 3 :(得分:0)
你可以让bar()返回它的参数。如果这是重点,你可以保存一行代码。
CFTypeRef foo()
{
CFTypeRef valueRef = NULL;
return bar(&valueRef);
}