更新文件外部的静态变量,而不修改在C lang中声明静态变量的文件。
Proj1创建dll。 Proj1有abc.h
个文件,定义如下:
static BOOl stvar = False;//declared as global static variable
func1()
{
stvar= TRUE;
}
func2()
{
if(stvar == TRUE)
{
....
}
else
{
func1(); //call to func1 sets STVAR = TRUE;
}
}
Proj2创建exe。它有cprog1.c
个文件。 cprog1.c
文件定义如下:
cprogfunc1()
{
func2(); //call to func2 sets STVAR = TRUE;
}
cprogfunc2()
{
stvar = FALSE;
func2();
}
我们在stvar
中将cprogfunc2()
设置为false,以使其在abc。func2()
的{{1}}中执行else块。但我们在h file
下的cprogfunc2()
中设置的值未反映在cprog1.c
文件中。我们在声明之外更新静态变量,因为我们无法在abc.h
下修改任何内容。因此,请建议一些方法来更新proj1
文件中的静态变量而不修改cprog1.c
。如果不可能,建议任何解决方法。感谢。
已经尝试过解决方案:
abc.h/Proj1
非静态 - 不可能,因为我们无法修改stvar
文件答案 0 :(得分:0)
根据定义,stvar是静态的,以限制它的可访问性,这意味着从外部修改它的理想方法是为它创建一个API(或者确实使它成为全局的,而不是静态的)。由于编辑Proj1是不可能的,我们的情况很糟糕。
你可以做的是通过释放dll并重新加载它来重置Proj1的状态,如提及here.