Spécificateurs statiques de la classe de stockage
Les spécificateurs statiques de la classe de stockage, static et extern, peuvent être appliqués aux objets et aux fonctions. Le tableau suivant indique où les mots clés static et extern peuvent et ne peuvent pas être utilisés.
Utilisation de static et extern
Construction |
static peut-il être utilisé ? |
extern peut-il être utilisé ? |
---|---|---|
Déclarations de fonction dans un bloc |
Non |
Oui |
Arguments formels d'une fonction |
Non |
Non |
Objets d'un bloc |
Oui |
Oui |
Objets extérieurs à un bloc |
Oui |
Oui |
Fonctions |
Oui |
Oui |
Fonctions membres de classe |
Oui |
Non |
Données membres de classe |
Oui |
Non |
Noms typedef |
Non |
Non |
Un nom spécifié avec le mot clé static a une liaison interne sauf pour les membres static d'une classe qui ont une liaison externe. Autrement dit, il n'est pas visible hors de l'unité de traduction actuelle. Un nom spécifié avec le mot clé extern a une liaison externe sauf s'il a été défini précédemment comme ayant une liaison interne. Pour plus d'informations sur la visibilité des noms, consultez Portée et Programme et liaison.
Notes
Les fonctions déclarées comme inline et qui ne sont pas des fonctions membres de classe reçoivent les mêmes caractéristiques de liaison que les fonctions déclarées comme static.
Un nom de classe dont la déclaration n'a pas encore été détectée par le compilateur peut être utilisé dans une déclaration extern. Le nom généré avec cette déclaration ne peut pas être utilisé tant que la déclaration de classe n'a pas été détectée.