2010-10-21 3 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_another в extern и доступ к ней:

extern volatile char var_another; 

Правильно ли это?

+1

Почему это статично, если вы хотите получить к нему доступ в другом файле? – JoshD

ответ

3

static и extern являются взаимоисключающими. Если вы хотите получить доступ к своему static char var1 из другого файла, вам нужно будет удалить static и просто сделать его регулярным глобальным. Вам не нужно volatile.

В качестве альтернативы вы можете создать функцию доступа, которая возвращает значение static char var1 и использовать его из другого модуля.

Сторона примечания: externs и экспортируемые прототипы функций обычно должны входить в заголовочные файлы.

3

Нет! Вся точка static (в этом контексте) заключается в том, что вы заявляете, что переменная видна только из этого модуля трансляции.

Если вы не хотите этого поведения, не объявляйте его статичным. Поместите char var1 = 0; в исходный файл и extern var1; в соответствующий файл заголовка.

В целом, не делайте этого вообще. Доступ к глобальным переменным между исходными файлами, вероятно, является рецептом катастрофы.