Accediendo al valor variable estático

Tengo una variable static en el archivo fuente test_1.c declarada como:

 static char var1 = 0; 

Necesito acceder al valor actual de esta variable desde el archivo fuente test_2.c . Entonces, hice algo como:

En test_1.c

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

y en test_2.c , declaro la variable var_another como extern y accedo a ella:

 extern volatile char var_another; 

¿Esta es la manera correcta de hacerlo?

static y extern son mutuamente excluyentes. Si desea acceder a su static char var1 desde un archivo diferente, tendrá que eliminar la static y simplemente hacerlo un global regular. No necesitas volatile en absoluto.

Alternativamente, puede hacer una función de acceso que devuelva el valor de static char var1 y usarlo desde su otro módulo.

Nota al margen: los prototipos de funciones externas y exportadas generalmente deben ir en archivos de encabezado.

¡No! El punto static de la static (en este contexto) es que está indicando que la variable solo es visible desde este módulo de traducción.

Si no desea este comportamiento, entonces no lo declare como estático. Ponga char var1 = 0; en su archivo fuente, y extern var1; en el archivo de encabezado asociado.

Más generalmente, no hagas esto en absoluto. El acceso a las variables globales entre los archivos de origen es probablemente una receta para el desastre.