Je suis nouveau à C. J'ai un livre devant moi qui explique la «portée du fichier» de C, y compris un exemple de code. Mais le code ne déclare et n'initialise qu'une variable de portée de fichier - il ne vérifie pas la portée de la variable en essayant, par exemple, d'y accéder de manière illégale. Alors! Dans l'esprit de la science, j'ai construit une expérience.En C, comment puis-je limiter la portée d'une variable globale au fichier dans lequel elle est déclarée?
fichier bar.c
:
static char fileScopedVariable[] = "asdf";
fichier foo.c
:
#include <stdio.h>
#include "bar.c"
main()
{
printf("%s\n", fileScopedVariable);
}
Selon mon livre, et Google, l'appel à printf()
devrait échouer - mais il ne fonctionne pas. foo.exe
sort la chaîne "asdf" et se termine normalement. J'aimerais beaucoup utiliser la portée du fichier. Qu'est-ce que je rate?
L'appel d'une variable définie avec un 'champ d'application' statique est un terme inapproprié. Il est limité à une seule unité de traduction, résultat du collage récursif de tous les fichiers #include. – Eric