void foo() {
static int x;
}
void bar() {
static int x;
}
int main() {
foo();
bar();
}
Répondre
Ils ne voient chacun que leur propre. Une variable ne peut pas être « vu » de l'extérieur du scope qu'il a déclaré dans
Si, d'autre part, vous avez fait cela.
static int x;
void foo() {
static int x;
}
int main() {
foo();
}
alors foo()
ne voit son x
local; le global x
a été "caché" par lui. Mais les changements à l'un n'affectent pas la valeur de l'autre.
@FredOverflow: Merci d'avoir attrapé que ... –
sont namespaces anonymes considérés comme un meilleur style que les globals statiques en C++? Les deux utilisations de "static int x;" (un mondial, un local) semble compliquer la question. – Flexo
@awoodlannd: l'utilisation de 'static' à cette fin est déconseillée en C++ (D.2/1). Que ce soit le meilleur style dépend si la personne que vous posez est d'accord avec cette dépréciation ... –
Ceci est parfaitement bien. En pratique, le nom réel de la variable dans la sortie du compilateur peut être considéré comme quelque chose comme function_bar_x
, c'est-à-dire qu'il est de la responsabilité de votre compilateur de s'assurer que ceux-ci ne sont pas incompatibles.
Les variables sont distinctes, chaque fonction a sa propre portée. Ainsi, bien que les deux variables durent toute la vie du processus, elles n'interfèrent pas les unes avec les autres.
Les deux vars statiques sont différents.
Rien arriver, les deux variables ont une portée theri et mantenir leurs valeurs à appeler dans l'appel
Le compilator se traduit chaque variable d'une manière unique, comme foo_x
et bar_x
dans votre exemple, ils sont taraudés différemment. Ne faites pas cela car votre code sera difficile à lire et à maintenir après un certain temps puisque vous ne serez pas en mesure d'attraper immédiatement ce dont vous parlez x
.
- 1. C: Exécuter deux fonctions en même temps?
- 2. OSX, variable statique partageant la même adresse
- 3. Variables statiques dans les fonctions en C++ - allouées même si la fonction ne s'exécute pas?
- 4. Que se passe-t-il si deux catégories ObjC remplacent la même méthode?
- 5. Même code faisant deux choses différentes sur deux applications différentes?
- 6. Comment déclarer deux variables statiques différentes? (C++)
- 7. C++: Tableau de pointeurs de fonctions membres vers différentes fonctions
- 8. C++ variable statique
- 9. problème variable C statique
- 10. Renvoyer la référence à la variable locale statique en C++
- 11. Deux fonctions faisant exactement la même chose, alias?
- 12. deux méthodes synchronisées différentes du même objet?
- 13. Afficher la même icône en 2 tailles différentes sur C#
- 14. Est-ce que ces fonctions sont vraiment différentes? jQuery.extend()
- 15. Ces deux fonctions d'Objective-C se bloquent sans message
- 16. C# Variable statique apprécient oublie
- 17. Accès à la même fonction de deux classes différentes
- 18. Aide combinant deux fonctions en C++
- 19. Comment faire pour envelopper deux fonctions C++ non managées en deux fonctions C# managées?
- 20. Est-ce que la valeur de bin2hex peut être la même pour deux chaînes différentes?
- 21. Que se passerait-il si vous supprimez ce en C++
- 22. joindre la même table deux fois sur des colonnes différentes
- 23. C# en utilisant une variable statique en tant que paramètre de DeploymentItem
- 24. Oracle: Utiliser deux versions différentes d'EXP sur la même machine?
- 25. initialisation statique en C
- 26. ATL/COM: Puis-je avoir la même fonction dans deux interfaces différentes du même objet?
- 27. Initialiser la variable finale statique
- 28. Si deux catégories différentes ont la même méthode, laquelle sera appelée par le système d'exécution Objective C?
- 29. Chaîne statique variable en Objective C sur l'iphone
- 30. deux référentiels git Fusion que différentes versions
Étant donné ce code? Rien. –
Ils ne déclarent pas la même variable. Deux fonctions différentes ne peuvent jamais déclarer la même variable locale statique. –