Que signifie statique en ANSI-C [double]
Question
Possible en double: Que signifie « statique » dans un programme C?
Que signifie le mot-clé static
signifie en C?
J'utilise ANSI-C. Je l'ai vu dans plusieurs exemples de code, ils utilisent le mot-clé static
devant des variables et devant des fonctions. Quel est le but en cas d'utilisation d'une variable? Et quel est le but en cas d'utilisation d'une fonction?
La solution
Tout comme une brève réponse, il y a deux usages pour le mot-clé static
lors de la définition des variables:
1- Les variables définies dans le champ de fichier avec mot-clé static
, i.e.. définies en dehors des fonctions ne sera visible que dans ce fichier. Toute tentative d'y accéder à partir d'autres fichiers entraînera symbole non résolu à l'heure du lien.
2- Les variables définies comme static
l'intérieur d'un bloc à l'intérieur d'une fonction persistera ou « survie » dans les différentes invocations du même bloc de code. Si elles sont définies initialisés, ils sont initialisés qu'une seule fois. variables static
sont généralement garantis d'être initialisé à 0
par défaut.
Autres conseils
static
dans le corps d'une fonction, à savoir utilisé comme un classificateur de stockage variable permet cette variable de conserver sa valeur entre les appels de fonction - on pourrait bien dire qu'une variable statique dans une fonction est variable globale visible uniquement à cette fonction. Cette utilisation de static
fait toujours la fonction, il est utilisé dans le thread dangereux vous devriez éviter.
L'autre cas d'utilisation utilise static
sur la portée globale, à savoir pour les variables et les fonctions globales: fonctions statiques et variables globales sont locaux à l'unité de compilation, à savoir qu'ils ne se présentent pas dans la table d'exportation de l'objet binaire compilé . Ils ne polluent pas ainsi l'espace de noms. Déclarant statique toutes les fonctions et variables globales ne pas être accessible depuis l'extérieur de l'unité de compilation (fichier C à savoir) en question est une bonne idée! Sachez simplement que les variables statiques ne doivent pas être placés dans des fichiers d'en-tête (à l'exception des cas particuliers i très rares).