C 访问静态变量值

C 访问静态变量值,c,C,我在源文件test_1.c中有一个static变量声明为: static char var1 = 0; 我需要从源文件test_2.c访问此变量的当前值。所以,我做了一些类似的事情: 在测试_1.c中 static char var1 = 0; volatile char var_another = var1; 在test_2.c中,我将变量var_另一个声明为extern,并访问它: extern volatile char var_another; 这是正确的方法吗?static和ex

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

static char var1 = 0;
我需要从源文件test_2.c访问此变量的当前值。所以,我做了一些类似的事情:

在测试_1.c中

static char var1 = 0;
volatile char var_another = var1;
test_2.c中,我将变量var_另一个声明为
extern
,并访问它:

extern volatile char var_another;

这是正确的方法吗?

static
extern
是相互排斥的。如果要从其他文件访问
静态字符var1
,则必须删除
静态
,并将其设置为常规全局文件。您根本不需要
volatile

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


旁注:外部程序和导出的函数原型通常应该放在头文件中。

static
extern
是互斥的。如果要从其他文件访问
静态字符var1
,则必须删除
静态
,并将其设置为常规全局文件。您根本不需要
volatile

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


旁注:外部程序和导出的函数原型通常应该放在头文件中。

否!
static
(在此上下文中)的全部要点是,您声明该变量仅在此翻译模块中可见

如果您不希望出现这种行为,那么不要将其声明为静态。Put
charvar1=0
extern var1


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

不!
static
(在此上下文中)的全部要点是,您声明该变量仅在此翻译模块中可见

如果您不希望出现这种行为,那么不要将其声明为静态。Put
charvar1=0
extern var1


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

如果要在另一个文件中访问它,为什么它是静态的?如果要在另一个文件中访问它,为什么它是静态的?