Vue d'ensemble des déclarations
une « déclaration » spécifie la traduction et les attributs d'un ensemble d'identificateurs.Une déclaration qui provoque également un stockage à réserver de l'objet ou la fonction nommée par l'identificateur est appelée une « définition. » Les déclarations C pour les variables, les fonctions, et les types ont cette syntaxe :
Syntaxe
declaration:
init-déclarateur-liste**;**optde déclaration-spécificateursdéclaration-spécificateurs:
stockage-classe-spécificateur attribut-seq optdéclaration-spécificateurs opt
/* attribut-seqoptest spécifique de Microsoft *
déclaration-spécificateurs de spécificateur de type opt
déclaration-spécificateurs de type-qualificateur opt
init-déclarateur-liste:
init-déclarateurinit-déclarateur-liste , init- déclarateur
init-déclarateur:
déclarateurinitialiseurde**=** des déclarateurs
[!REMARQUE]
Cette syntaxe pour declaration n'est pas répétition dans les sections suivantes.La syntaxe dans les sections suivantes est généralement avec declarator non terminal.
Les déclarations dans l'init-déclarateur-liste contiennent les ID qui sont nommés ; l'init est une abréviation de l'initialiseur.L'init-déclarateur-liste est une séquence délimitée par des virgules des déclarateurs, qui peuvent avoir d'autres informations de type, ou un initialiseur, ou les deux.declarator contient les ID, le cas échéant, qui sont déclarés.Les déclaration-spécificateurs non terminaux se compose d'une séquence de spécificateurs de type et de classe de stockage qui indiquent la liaison, la durée de stockage, et au moins la partie du type des entités que les déclarateurs définit.Par conséquent, les déclarations se composent d'une combinaison des spécificateurs de classe de stockage, tapez des spécificateurs, les qualificateurs de type, les déclarateurs, et les initialiseurs.
les déclarations peuvent contenir un ou plusieurs des attributs facultatifs répertoriés dans attribut- seq; seq est une abréviation de la séquence.Ces attributs spécifiques à microsoft remplissent diverses fonctions, qui sont discutées en détail dans tout ce livre.Pour obtenir la liste de ces attributs, consultez Résumé de syntaxe du langage C.
Dans le formulaire général d'une déclaration de variable, le spécificateur de type indique le type de données de la variable.Le spécificateur de type peut être un composite, comme lorsque le type est modifié par const ou volatile.declarator indique le nom de la variable, probablement modifié pour déclarer un type tableau ou pointeur.Par exemple :
int const *fp;
déclare une variable nommée fp en tant que pointeur (const) à une valeur non modifiable d' int .Vous pouvez définir plusieurs variables dans une déclaration à l'aide de plusieurs déclarateurs, séparés par des virgules.
Une déclaration doit avoir au moins un déclarateur, ou son spécificateur de type doit déclarer une balise de structure, la balise d'union, ou les membres d'une énumération.Les déclarateurs fournissent des informations suivantes concernant un identificateur.Un déclarateur est un identificateur qui peut être modifié par des crochets ([]), des astérisques (*), ou des crochets (()) pour déclarer un tableau, un pointeur, ou un type de fonction, respectivement.Lorsque vous déclarez des variables simples (comme le caractère, entiers, et les éléments à virgule flottante, ou les structures et les unions des variables simples, declarator est un simple identificateur.Pour plus d'informations sur les déclarateurs, consultez déclarateurs et déclarations de variable.
Toutes les définitions sont implicitement des déclarations, mais pas toutes les déclarations sont des définitions.Par exemple, les déclarations de variable qui commencent par le spécificateur de classe de stockage d' extern « référence, » plutôt que « définissant » des déclarations.Si une variable externe doit être indiquée avant d'être définie, ou s'il est défini dans un autre fichier source de celui dans lequel elle est utilisée, la déclaration d' extern est nécessaire.Le stockage n'est pas allouée « en référençant » les déclarations, ni de retourner des variables être initialisées dans les déclarations.
Une classe de stockage ou un type (ou les deux) est requise dans les déclarations de variable.À l'exception __declspec, seul un spécificateur de classe de stockage est autorisé dans une déclaration et tous les spécificateurs de classe de stockage sont autorisés dans chaque contexte.La classe de stockage d' __declspec est autorisée avec d'autres spécificateurs de classe de stockage, et elle est autorisée plusieurs fois.Le spécificateur de classe de stockage affecte d'une déclaration comment l'élément déclaré est enregistré et initialisé, et que les parties d'un programme peuvent référencer l'élément.
Les feuilles de stockage-classe-spécificateur définis dans C incluent auto, extern, registre, statique, et typedef.En outre, Microsoft C inclut le terminal __declspecde stockage-classe-spécificateur .Tous les feuilles de stockage-classe-spécificateur à l'exception typedef et __declspec sont traités dans classes de stockage.Consultez déclarations de typedef pour plus d'informations sur typedef.Consultez l' attributs étendus de classe de stockage pour plus d'informations sur __declspec.
L'emplacement de la déclaration dans le programme source et la présence ou l'absence d'autres déclarations de variables sont des facteurs importants pour déterminer la durée de vie des variables.Il peut y avoir plusieurs redeclarations mais une seule définition.Toutefois, une définition peut apparaître dans plusieurs unité de traduction.Pour les objets avec une liaison interne, cette règle s'applique séparément à chaque unité de traduction, car en interne des objets liés sont propres à une unité de traduction.Pour les objets avec une liaison externe, cette règle s'applique au programme entier.Consultez durée de vie, portée, visibilité, et liaison pour plus d'informations sur la visibilité.
Les spécificateurs de type fournissent des informations sur les types de données des identificateurs.le spécificateur de type par défaut est int.Pour plus d'informations, consultez tapez les spécificateurs.Les spécificateurs de type peuvent également définir des balises de types, les noms de composants de structure et d'union, et des constantes d'énumération.Pour plus d'informations, consultez déclarations d'énumérationdéclarations de structure, et le Déclarations d'union.
Il existe deux terminaux de type-qualificateur : const et volatile.Ces qualificateurs spécifient les propriétés supplémentaires des types qui sont utiles uniquement lors de l'accès aux objets de ce type via des valeurs lvalues.Pour plus d'informations sur const et volatile, consultez qualificateurs de type.Pour une définition des valeurs lvalues, consultez l' Expressions l-value et de R-Valeur.