将代码传输到子功能

时间:2010-07-02 17:20:04

标签: c++

我在一个函数中有一些代码,我想将它们分成它自己的函数。我希望尽可能少地修改原始代码。下面我写了一个简单的例子,代码段只是“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;
}

5 个答案:

答案 0 :(得分:5)

您可以通过引用传递变量:

void sub_function(int y, int& x)
{
   x+=y
}

答案 1 :(得分:3)

这个技巧被称为传递参考。 C ++ FAQ在这里有一个很好的参考资料部分:

https://isocpp.org/wiki/faq/references

答案 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内联对性能没有影响。