C++ statique de la fonction locale vs globale de la fonction
Quelle est l'utilité d'avoir des fonctions statiques dans un fichier ?
Comment sont-ils différents de la planète des fonctions dans un fichier ?
static int Square(int i)
{
return i * i;
}
vs
int Square(int i)
{
return i * i;
}
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser ces fonctions pour fournir partagé logique de mise en œuvre à d'autres fonctions dans le même fichier. Diverses fonctions d'assistance spécifiques à un fichier sont de bons candidats pour être déclaré fichier statique.
Ils sont invisibles à l'éditeur de liens, permettant à d'autres unités de compilation de définir des fonctions avec la même signature. En utilisant les espaces de noms atténue ce problème dans une large mesure, mais le fichier-
static
fonctions antérieures espaces de noms, parce qu'ils sont une caractéristique héritée du langage de programmation C.Un
static
fonction signifie simplement que l'éditeur de liens ne peut pas exporter la fonction (c'est à dire le rendre visible aux autres les unités de traduction). Il rend la fonction "privé" de l'actuel de l'unité de traduction. C'est la même chose comme emballage de la fonction dans un espace de noms anonymes.Généralement, l'utilisation d'un anonyme, un espace de noms est le préféré C++ moyen d'y parvenir, au lieu d'utiliser le
static
mot-clé.Fonctions statiques sont visibles sur le fichier dans lequel elles ont été définies uniquement.
Vous ne pouvez pas se référer à eux à l'extérieur de ce fichier en particulier.
Lire la suite ici
En un mot, le couplage.
static
fonctions ont une liaison interne, qui est, ils ne sont pas visibles à l'extérieur de leur unité de traduction.