更新文件外部的靜態變量,而不修改C lang中聲明靜態變量的文件。從c中的另一個文件更新靜態全局變量
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。它有文件。文件的定義如下:
cprogfunc1()
{
func2(); //call to func2 sets STVAR = TRUE;
}
cprogfunc2()
{
stvar = FALSE;
func2();
}
我們在cprogfunc2()
設置stvar
爲false,以使其在ABC的func2()
執行else塊。 h file
。但是我們在cprogfunc2()
下設置的值未反映在abc.h
文件中。我們正在更新其聲明之外的靜態變量,因爲我們無法修改proj1
下的任何內容。所以請建議一些方法來更新來自文件的靜態變量,而不要修改abc.h/Proj1
。如果這是不可能的,建議任何解決方法。謝謝。
解決方案已經嘗試過:
- 製作
stvar
非靜態的 - 不可能的,因爲我們不能修改abc.h
文件 - 使用指針 - 沒有工作
你的問題很清楚,請不要使用代碼格式化的東西,arne't代碼,並清楚地指出哪個代碼在哪個文件中,以及如何編譯 –
如果您問兩個不同的.exe程序是否可以共享一個靜態變量......不是這樣,他們不能 –