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