Partager via


Tapez les qualificateurs

Les qualificateurs de type fournissent une des deux propriétés à un identificateur.Le qualificateur de type de const déclare un objet comme étant non modifiable.Le qualificateur de type d' volatile déclare un élément dont la valeur peut légitimement être modifiée par quelque chose au delà de le contrôle du programme où il apparaît, comme un thread qui s'exécutent simultanément.

Les deux qualificateurs de type, const et volatile, peuvent apparaître qu'une seule fois dans une déclaration.Les qualificateurs de type peuvent apparaître avec tout spécificateur de type ; toutefois, ils ne peuvent pas apparaître après la première virgule dans une déclaration multiple d'élément.Par exemple, les déclarations suivantes sont valides :

typedef volatile int VI;
const int ci;

Ces déclarations ne sont pas autorisés :

typedef int *i, volatile *vi;
float f, const cf;   

Les qualificateurs de type sont appropriés uniquement en accédant à des identificateurs comme valeurs lvalues dans des expressions.Consultez l' Expressions l-value et de R-Valeur pour plus d'informations sur les valeurs lvalues et des expressions.

Syntaxe

  • type-qualificateur:
    constvolatile

Voici const autorisé et les déclarations d' volatile :

int const *p_ci;       /* Pointer to constant int */
int const (*p_ci);     /* Pointer to constant int */
int *const cp_i;       /* Constant pointer to int */
int (*const cp_i);     /* Constant pointer to int */
int volatile vint;     /* Volatile integer        */

Si la spécification d'un type tableau inclut des qualificateurs de type, l'élément n'est qualifié, pas le type de tableau.Si la spécification du type de fonction comprend des qualificateurs, le comportement n'est pas défini.Ni volatile ni const n'affecte les propriétés de plage de valeurs ou des opérations arithmétiques de l'objet.

cette liste décrit comment utiliser const et volatile.

  • Le mot clé de const peut être utilisé pour modifier n'importe quel type fondamental ou global, ou un pointeur vers un objet de tout type, ou d' typedef.Si un élément est déclaré avec uniquement le qualificateur de type de const , son type est pris pour être int const.Une variable de const peut être initialisée ou peuvent être placées dans une zone en lecture seule de stockage.Le mot clé de const est utile pour déclarer des pointeurs vers const étant donné que cela nécessite de la fonction pour ne pas modifier le pointeur de quelque manière que ce soit.

  • Le compilateur suppose que, à tout moment dans le programme, une variable d' volatile est accessible par un processus inconnu qui utilise ou modifie sa valeur.Par conséquent, indépendamment des optimisations spécifiées sur la ligne de commande, le code de chaque peut-être à ou référence d'une variable d' volatile doit être généré même s'il semble n'avoir aucun effet.

    Si volatile est utilisé seul, int est utilisé.le spécificateur de type d' volatile peut être utilisé pour fournir l'accès fiable aux emplacements de mémoire spéciaux.Utilisez volatile avec les objets de données accessibles ou modifié par des gestionnaires de signal, en exécutant simultanément des programmes, ou par le matériel spéciaux tels que le contrôle d'E/S mappé en mémoire sont enregistrées.Vous pouvez déclarer une variable comme volatile pour sa durée de vie, ou vous pouvez effectuer un cast d'une référence unique pour être volatile.

  • Un élément peut être const et volatile, auquel cas l'élément n'a pas pu être légitimement modifié par son propre programme, mais peut être modifié par un processus asynchrone.

Voir aussi

Concepts

Déclarations et types