gpt4 book ai didi

C静态变量不更新

转载 作者:太空宇宙 更新时间:2023-11-04 02:11:47 24 4
gpt4 key购买 nike

我的 C 代码有问题,我声明了一个 static int 变量(作为标志),然后在 init() 中将其初始化为 -1,它只调用一次,然后当我尝试更新值时到 0 或 1 之后,它会一直恢复到 -1。

有人知道问题出在哪里吗?

我没有任何具有相同标识符的局部变量,所以我真的迷路了。

谢谢!

static int previousState;

void init()
{
previousState = -1;
}

void moveForward(int currentState)
{
if (previousState == -1)
previousState = currentState;

if (previousState != currentState)
{
/* do stuff */
/* PROBLEM: it never goes into here, because previousState is always -1! */
}

/* other code */
}

void main()
{
init();

if (fork() == 0)
{
/* do stuff */
moveForward(1);
exit();
}

/* more forks */

moveForward(0);
exit();
}

最佳答案

每个进程只调用一次 moveForward。进程不共享静态数据!

使用线程,或者使用共享内存。还可以使用互斥量或信号量来并发访问共享数据。最好切换到一种更适合并行处理的语言......

关于C静态变量不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13126647/

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