gpt4 book ai didi

c - 我们应该如何从一个名为 'n' no 的函数中只调用一次函数?不使用静态变量的主函数的次数?

转载 作者:行者123 更新时间:2023-11-30 21:48:43 25 4
gpt4 key购买 nike

我使用的是 vs 2008,这是我面临的问题的示例程序

int main()
{
abc();
abc();
abc();
abc();
return 0;
}

void abc()
{
static int Val = 0;

if(Val == 0)
{
xyz();
val++;
}

printf("This is abc");
}

void xyz()
{
printf("This is xyz");
}

这种方法对于第一个调试 session 效果很好,xyz() 仅被调用一次,但在下一个调试 session 中,静态变量Val 只将其值保留为 1,因此根本不调用 xyz(),我如何调用 xyz () 一次不使用静态,因为静态对我的问题根本没有帮助??

最佳答案

我会传递参数而不是static int以实现可重入。然后调用者可以决定在需要时重新初始化状态。

int main()
{
int state = 0;

abc(&state);
abc(&state);
abc(&state);
abc(&state);
return 0;
}

void abc(int* state)
{
if (*state == 0)
{
xyz();
++*state;
}
printf("This is abc");
}

关于c - 我们应该如何从一个名为 'n' no 的函数中只调用一次函数?不使用静态变量的主函数的次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20920010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com