Accéder à une variable globale statique à partir d'un autre fichier dans C
En langage C, je veux accéder à une variable globale statique à l'extérieur de la portée du fichier. Permettez-moi de savoir la meilleure façon possible de le faire.
Une des méthodes consiste à attribuer un extern variable globale de la valeur de la variable statique,
Dans un fichier.c
static int val = 10;
globalvar = val;
Dans le fichier b.c
extern globalvar;
Mais dans ce cas, toutes les modifications dans le val de fichier(un.c) ne sera pas mis à jour dans globalvar (fichier b.c).
S'il vous plaît laissez-moi savoir comment je peux obtenir le même.
Grâce,
Sikandar.
Vous devez accepter les réponses sur ou à clarifier vos autres questions. Voir les commentaires dans le stackoverflow.com/questions/1830896.
Pour ceux qui se demandent pourquoi quelqu'un voudrait le faire: je rencontre une situation similaire dans le besoin à accéder à un tableau de commande à l'intérieur du code généré, à développer dans le fabricant de l'IDE pour les leur matériel programmable.
Pour ceux qui se demandent pourquoi quelqu'un voudrait le faire: je rencontre une situation similaire dans le besoin à accéder à un tableau de commande à l'intérieur du code généré, à développer dans le fabricant de l'IDE pour les leur matériel programmable.
OriginalL'auteur Sikandar | 2009-12-29
Vous devez vous connecter pour publier un commentaire.
Bien, si vous pouvez modifier le fichier
a.c
puis faitesval
non-statique.Si vous pouvez modifier
a.c
, mais ne peut pas faireval
non-statique (pourquoi?), ensuite, vous pouvez simplement déclarer un pointeur global dansa.c
et dans
b.c
nequi vous permettra d'accéder à la valeur actuelle de
val
par*pval
. Ou vous pouvez introduire une non-statique de la fonction qui retourne la valeur actuelle deval
.Mais encore une fois, si vous avez besoin d'accéder à partir d'autres unités de traduction, il suffit de le rendre non-statique.
OriginalL'auteur AnT
Vous pouvez faire de la variable globale pointeur vers la variable globale statique.
Sur l'exécution:
OriginalL'auteur gameover
Vous ne pouvez pas accéder à un fichier de niveau statique de la variable en dehors du fichier.
Si vous avez vraiment besoin de faire cela, vous avez un couple de choix.
Ajouter une fonction d'accès au fichier qui a une variable statique. La bonne chose est ce limite l'accès de l'extérieur du fichier à accès en lecture seule:
int read_static() { return val; }
Baisse de la statique et la qualification de rendre la variable globale.
vous avez absolument raison. Mais je me souviens quand j'étais un débutant programmeur C qui "unités de traduction" toujours me confond.
OriginalL'auteur R Samuel Klatchko
Solution 1:
Dans un fichier.c
Dans le fichier b.c
Solution 2:
Au lieu d'avoir une autre variable à transmettre l'adresse de la variable statique, ce qui ajoute quelques octets de mémoire le gaspillage, faire de la statique de la variable elle-même comme extern.
Solution 2 est recommandée, mais dans le cas si vous êtes limité à la modification de la variable statique à l'externe, l'utilisation de la solution 1.
OriginalL'auteur wrapperm