En C, ¿cómo restrinjo el alcance de una variable global al archivo en el que se declara?
Soy nuevo en C. Tengo un libro frente a mí que explica el "alcance del archivo" de C, incluido el código de muestra. Pero el código solo declara e inicializa una variable de ámbito de archivo; no verifica el alcance de la variable, por ejemplo, al intentar acceder a ella de forma ilegal. ¡Asi que! En el espíritu de la ciencia, construí un experimento.
Expedientebar.c
:
static char fileScopedVariable[] = "asdf";
Expedientefoo.c
:
#include <stdio.h>
#include "bar.c"
main()
{
printf("%s\n", fileScopedVariable);
}
Según mi libro, y para Google, la llamada aprintf()
debería fallar, pero no lo hace.foo.exe
saca la cadena "asdf" y termina normalmente. Me gustaría mucho usar el alcance del archivo. ¿Qué me estoy perdiendo?