Freigeben über


Typqualifizierer

Typqualifizierer geben einen Bezeichner für eine der beiden Eigenschaften.Der const-Typqualifizierer deklariert ein Objekt, um nicht veränderbar sein soll.Der Typqualifizierer deklariert volatile ein Element, dessen Wert durch etwas außerhalb der Kontrolle des Programms, in dem es angezeigt wird, z. B. ein ausführender Thread gleichzeitig auch auf zulässige Weise geändert werden kann.

Die beiden Typqualifizierer, const und volatile, können in einer Deklaration nur einmal vorkommen.Typqualifizierer können mit jedem Typspezifizierer angegeben werden. Allerdings können sie nicht nach dem ersten Komma in einer Deklaration mehrere Element angezeigt werden.Beispielsweise sind die folgenden Deklarationen gültig:

typedef volatile int VI;
const int ci;

Diese Deklarationen sind nicht gültig:

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

Typqualifizierer sind nur relevant, wenn der Bezeichner als L-Werte in Ausdrücken zugreift.Weitere Informationen dazu finden Sie unter L-Werts-und R-Werts-Ausdrücke L-Werte und Ausdrücke.

Syntax

  • TYPE Qualifizierern:
    constvolatile

Im Folgenden finden Sie gültige const und volatile Deklarationen:

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        */

Wenn die Angabe eines Arraytyps Typqualifizierer enthält, wird das Element nicht vom Arraytyp beschreibt.Wenn die Angabe des Typs der Qualifizierer enthält, ist das Verhalten nicht definiert.Weder volatile wirkt sich noch const die Wertebereichs- oder Arithmetik von Eigenschaften des Objekts.

Diese Liste wird beschrieben, wie const und volatileverwendet.

  • Das const-Schlüsselwort kann verwendet werden, um jeden grundlegenden oder gesamten Typ oder ein Zeiger auf ein Objekt beliebigen Typs oder eines typedefzu ändern.Wenn ein Element nur mit dem const-Typqualifizierer deklariert wurde, wird der Typ übernommen, um const intsein.Eine Variable kann const initialisiert werden können oder in einem schreibgeschützten Bereich des Arbeitsspeichers gespeichert werden.Das const-Schlüsselwort ist für das Deklarieren von Zeigern auf const nützlich, da dies die Funktion erfordert, dass der Zeiger nicht auf irgendeine Weise geändert werden.

  • Der Compiler geht davon aus, dass an einem beliebigen Punkt im Programm eine volatile-Variablen durch einen unbekannten Prozess zugegriffen werden kann, dessen Wert verwendet oder geändert wird.Daher unabhängig von der Optimierungen, die in der Befehlszeile angegeben sind, muss der Code den Verweis oder als jede Zuweisung zu einer volatile-Variable generiert werden, auch wenn dies keine Auswirkungen zu haben scheint.

    Wenn volatile allein verwendet wird, wird int angenommen.Der volatile-Typspezifizierer kann verwendet werden, um zuverlässige Zugriff auf den speziellen Speicherorte zu ermöglichen.Verwenden Sie volatile mit Datenobjekten zugegriffen werden kann, die von Signal Klassenhandler oder geändert werden, indem spezielle Hardware oder Software gleichzeitig über das Steuerelement registriert der im Speicher abgebildeten E/A ausgeführt wird.Sie können eine Variable als volatile während seiner Lebensdauer deklarieren, oder Sie können einen einzelnen Verweis umwandeln, um volatilesein.

  • Ein Element kann const und volatilesein. In diesem Fall wird das Element nicht über ein eigenes Programm auf zulässige Weise geändert werden kann, kann jedoch durch einen asynchronen Vorgang geändert werden.

Siehe auch

Konzepte

Deklarationen und Typen