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?
Réponse
Trop de publicités?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...