2010-10-21 69 views
1

我有一個static變量在源文件test_1.c時聲明:訪問靜態變量的值

static char var1 = 0; 

我需要從源文件test_2.c訪問此變量的當前值。所以,我不喜歡的東西:

在test_1.c時

static char var1 = 0; 
volatile char var_another = var1; 

test_2.c,我聲明變量var_anotherextern和訪問:

extern volatile char var_another; 

這是做到這一點的正確方法嗎?

+1

爲什麼它是靜態的,如果你想在另一個文件中訪問它? – JoshD 2010-10-21 16:21:51

回答

3

staticextern是互斥的。如果您想從其他文件訪問您的static char var1,則必須刪除static並將其設置爲常規全局。根本不需要volatile

或者,您可以創建一個訪問器函數,該函數返回static char var1的值並將其用於其他模塊。

備註:externs和導出的函數原型通常應該放在頭文件中。

3

不! static(在此上下文中)的全部意義在於您聲明變量僅在此翻譯模塊中可見。

如果你不想要這種行爲,那麼不要聲明它是靜態的。將char var1 = 0;放入源文件中,並將extern var1;放入關聯的頭文件中。

更一般地說,不要這樣做。在源文件之間訪問全局變量可能是一場災難。