访问静态变量值

时间:2010-10-21 16:17:39

标签: c

我在源文件 test_1.c 中有一个static变量声明为:

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;

这是正确的方法吗?

2 个答案:

答案 0 :(得分:3)

staticextern是互斥的。如果您想从其他文件访问static char var1,则必须删除static,然后将其设为常规全局。您根本不需要volatile

或者,您可以创建一个访问函数,该函数返回static char var1的值并使用其他模块中的值。

附注:externs和导出的函数原型通常应该放在头文件中。

答案 1 :(得分:3)

没有! static(在此上下文中)的重点在于您声明该变量仅在此翻译模块中可见。

如果您不想要此行为,请不要将其声明为静态。将char var1 = 0;放在源文件中,将extern var1;放在关联的头文件中。

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