2010-10-21 101 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;放入关联的头文件中。

更一般地说,不要这样做。在源文件之间访问全局变量可能是一场灾难。