Définitions facultatives

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Syntaxe de déclaration - Index

La norme ANSI du langage C introduit un nouveau concept, celui de définition facultative. Toute déclaration de données externe qui ne contient pas de spécificateur de classe de stockage, ni de valeur d'initialisation est considérée comme définition facultative. Si l'identificateur déclaré apparaît dans une définition ultérieure, la définition facultative est traitée comme si le spécificateur de stockage extern existait. En d'autre termes, la définition facultative devient une simple déclaration.

Si la fin d'une unité de traduction est atteinte sans qu'aucune définition ne soit apparue avec une valeur d'initialisation pour l'identificateur, la définition facultative devient une définition à part entière, et l'objet défini n'est pas initialisé. Par exemple,

int x;
int x;           /*légal, une copie de x est réservée */
int y;
int y = 4;       /* légal, y est initialisé à 4 */
int z = 5;
int z = 6;       /* illégal, les deux sont des définitions avec des valeurs d'initialisation */

A la différence de la norme ANSI du langage C, le C++ ne présente pas de concept de définition facultative ; une déclaration de données externe sans spécificateur de classe de stockage est toujours une définition.

Voir aussi