如何在C中调用另一个函数中的多个函数

时间:2014-03-06 23:25:45

标签: c iteration

我试图找出如何在C语言的另一个函数中调用不同迭代中的不同函数。例如,假设我正在进行调用的函数是A.在第一次迭代中,我想在A中调用函数B但在所有其他迭代中我想调用函数C.注意,迭代不仅仅在函数A上这是一个更大的程序的一部分,所以我不能在这个函数中放置一个for循环。

4 个答案:

答案 0 :(得分:1)

您可以使用本地范围的静态变量来跟踪是否已调用A:

void caller()
{
    static int called_before = 0;

    if (called_before)
    {
      B();
    }
    else
    {
      A();
      called_before = 1;
    }
}

答案 1 :(得分:1)

在你的函数中为什么不使用计数器?:

static int count ;

if(count==0)
{
//call function B
}
else
{
//call function C
}
count++;

答案 2 :(得分:0)

您要求的内容需要存储与功能A关联且可访问的某种状态。

默认状态表示该函数从未被调用,然后在第一次调用时函数将检查状态,看到它没有被调用,并且更改状态以指示它&# 39;被调用,然后调用函数B.

对A的所有后续调用都将检查状态,看到它已被调用,并调用函数C.

有关维持状态的说明,请参阅memento模式:http://en.wikipedia.org/wiki/Memento_pattern

@ itsme86和@brokenfoot都有这样做的例子

答案 3 :(得分:0)

另一种可能性是使用全局变量。

在名为header_global.h的标题中输入以下内容:

extern int GlobalVar=0;

然后在你的函数中放

#include“header_global.h”

 if (GlobalVar==0)
    {
      function_B();
      GlobalVar++;
    }
    else
    {
      function_C();
    }