65 votes

C/C++ global vs global statique

Duplicata possible : Statique vs global

Je suis confus au sujet des différences entre les variables globales globales et statiques. Si statique signifie que cette variable n'est globale que pour le même fichier, alors pourquoi dans deux fichiers différents le même nom provoque-t-il des collisions de nom ?

Quelqu'un peut-il expliquer cela?

9voto

Jerry Coffin Points 237758

Un nom statique dans chaque fichier ne devrait pas provoquer de collisions de noms. Si vous voyez cela, veuillez publier un code de démonstration (court) le montrant, avec le compilateur exact que vous utilisez afin que nous puissions vérifier correctement le code et en supposant qu'il est correct, vilipender correctement le compilateur.

Juste FWIW, la méthode préférée en C++ consiste à utiliser un espace de noms anonyme à la place :

 namespace { 
    int not_a_static_variable;
}

En toute honnêteté, non, je ne peux pas souligner beaucoup d'avantages objectifs à cela cependant...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X