En C langage C, je souhaite accéder à une variable statique globale en dehors de la portée du fichier. Laissez-moi savoir le meilleur moyen possible de le faire. Une des méthodes consiste à attribuer une variable globale externe la valeur de la variable statique,
dans le fichier AC p> dans le fichier bc p> S'il vous plaît laissez-moi savoir comment J'accueille la même chose. P> merci,
Sikandar. P> p>
4 Réponses :
Vous ne pouvez pas accéder à une variable statique de niveau de fichier à l'extérieur du fichier. P>
Si vous avez vraiment besoin de faire cela, vous avez quelques choix. P>
Ajoutez une fonction d'accesseur au fichier qui a la variable statique. La bonne chose est que cela restreint l'accès de l'extérieur du fichier à l'accès en lecture seule: P>
int lecture_static () {retour val; } p> li>
Déposez le qualificatif statique et faites la variable d'un global. p> li> ol>
Presque: vous ne pouvez pas y accéder à l'extérieur de cette TU (unité de traduction). Une compréhension des TUS et de la réalisation du niveau de fichier statique signifie "tu-local seulement" est ce dont il a besoin.
@Roger - Vous êtes absolument correct. Mais je me souviens quand j'étais un programmeur de Newbie C que "Unité de traduction" m'a toujours confondu.
Eh bien, si vous pouvez modifier le fichier Si vous pouvez modifier et dans qui vous permettra d'accéder à la valeur actuelle de Mais à nouveau, si vous devez y accéder à partir d'autres unités de traduction, faites-la simplement -static. p> p> AC code>, il suffit de faire
val code> non statique.
AC code> mais peut 'T Fake
val code> non statique (pourquoi?), vous pouvez simplement déclarer un pointeur global à celui-ci dans
AC code> p>
bc code> do p>
val code> via
* pval code>. Ou vous pouvez introduire une fonction non statique qui retournera la valeur actuelle du
Val code>. P>
Vous pouvez faire le pointeur de variable global à la variable statique globale. On s'exécute: P> $ gcc *.c && ./a.out
100
dans le fichier AC p> dans le fichier bc p> au lieu d'avoir une autre variable à transmettre l'adresse de la variable statique, ajoutant ainsi peu de gaspillage d'octets de mémoire, faites la variable statique elle-même comme extern. P > solution 2 est recommandé, mais si vous êtes limité à la modification de la variable statique en externe, utilisez la solution 1. P> P>
Pour ceux qui se demandent pourquoi quelqu'un voudrait faire cela: je rencontre une situation similaire avec laquelle vous devez accéder à une table de commandement dans le code généré, développant dans l'IDE du fabricant pour leur matériel programmable.