Classe de stockage
le spécificateur de classe de stockage dans une définition de fonction donne la fonction extern ou classe de stockage de statique .
Syntaxe
définition de fonction:
instructionoptcomposée attribut-seqoptde déclaration-liste des déclarateursoptde déclaration-spécificateurs/* attribut-seq est spécifique de Microsoft *
déclaration-spécificateurs:
déclaration-spécificateurs de stockage-classe-spécificateur optdéclaration-spécificateurs de spécificateur de type opt
déclaration-spécificateurs de type-qualificateur opt
stockage-classe-spécificateur: /* Pour les définitions de fonctions *
externstatic
Si une définition de fonction n'inclut pas de stockage-classe-spécificateur, la classe de stockage correspond par défaut à extern.Vous pouvez déclarer explicitement une fonction comme extern, mais il n'est pas obligatoire.
Si la déclaration d'une fonction contient *le stockage-classe-spécificateur *extern, l'identificateur a la même liaison que toute déclaration visible de l'identificateur à la portée du fichier.S'il n'existe aucune déclaration visible avec la portée du fichier, l'identificateur a une liaison externe.Si un identificateur n'a une portée du fichier et aucun stockage-classe-spécificateur, l'identificateur a une liaison externe.La liaison externe signifie que chaque instance de l'identificateur identifie le même objet ou une fonction.Consultez durée de vie, portée, visibilité, et liaison pour plus d'informations sur la liaison et la portée du fichier.
Les déclarations de fonctions de portée de bloc avec un spécificateur de classe de stockage autre que extern génèrent des erreurs.
Une fonction avec la classe de stockage de statique est uniquement visible dans le fichier source dans lequel elle est définie.Toutes les autres fonctions, s'ils sont fournis la classe de stockage d' extern explicitement ou implicitement, sont visibles dans tous les fichiers sources dans le programme.Si la classe de stockage de statique est souhaitée, elle doit être déclarée sur la première occurrence d'une déclaration (le cas échéant) de la fonction, puis dans la définition de la fonction.
Spécifique à Microsoft
Lorsque les extensions Microsoft sont activées, une fonction initialement déclarée sans classe de stockage (ou avec la classe de stockage d' extern ) reçoit la classe de stockage de statique si la définition de fonction se trouve dans le même fichier source et si la définition indique explicitement la classe de stockage de statique .
Lors de la compilation avec l'option du compilateur /Ze, les fonctions déclarées dans un bloc en utilisant le mot clé d' extern ont la visibilité globale.Ce n'est pas le cas lors de la compilation avec /Za.Il ne doit pas compter au moment cette fonctionnalité si la portabilité du code source est une considération.
détail de FIN Microsoft