我的C代码有个问题,我声明了一个静态int变量(作为标志),然后在in it()中将它初始化为-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 - C静态变量未更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13126647/