我在一个函数中有一些代码,我想将它们分成它自己的函数。我希望尽可能少地修改原始代码。下面我写了一个简单的例子,代码段只是“x + = y”。我想取出代码并将其放在自己的函数中。使用C我必须通过将y更改为指针然后使用它来完成此操作。但是我记得在某个地方(现在已经忘记了)在C ++中有一些技巧可以传递变量,代码可以保持为“x + = y”。
仅供参考:我正在做一些调用图分析,我想做这个过程(也许稍后会反过来)。
void main()
{
int x = 2;
int y = 5;
#if KEEP_IN_BIG_FUNC
x += y;
#else // put in sub function
sub_function(y,&x);
#endif
printf("x = %d\n",x); // hopefully will print "7"
}
void sub_function(int y,int *x)
{
*x += y;
}
答案 0 :(得分:5)
您可以通过引用传递变量:
void sub_function(int y, int& x)
{
x+=y
}
答案 1 :(得分:3)
这个技巧被称为传递参考。 C ++ FAQ在这里有一个很好的参考资料部分:
答案 2 :(得分:2)
我相信你所寻找的是一个参考。在您的示例中,函数sub_function
将如下所示:
void sub_function(int y, int& x)
{
x += y;
}
你会这样称呼它:
sub_function(y, x);
答案 3 :(得分:2)
它被称为传递参考:
void sub_function(int y, int &x) {
x += y;
}
调用如:
sub_function(y,x);
答案 4 :(得分:0)
顺便说一句,与KEEP_IN_BIG_FUNC设置为1的主要内容相比,sub_function内联对性能没有影响。