型の修飾子
型修飾子は識別子に 2 個のプロパティの 1 種類があります。 定数 の型修飾子は不変である場合はオブジェクトを宣言します。volatile の型修飾子の値が表示などのプログラム制御できないものによって適切に実行中のスレッド同時に変更できる項目を宣言します。
2 人の型修飾子 定数 および volatile は一度だけ宣言で表示できます。型修飾子は型指定子と表示できます。; ただし複数の項目の宣言の最初のコンマの後では使用できません。たとえば次の宣言があります :
typedef volatile int VI;
const int ci;
これらの宣言はできません :
typedef int *i, volatile *vi;
float f, const cf;
型修飾子は識別子を式の左辺値としてアクセスしたときにだけ適用されます。左辺値と式については 左辺値と値の式 R を参照してください。
構文
- 修飾子型 :
constvolatile
次は 定数 と 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 */
配列の指定はその型の修飾子が含まれる場合要素は配列型表示されます。関数型の指定は修飾子が含まれている場合動作は未定義です。volatile が 定数 オブジェクトの OR 演算のプロパティのスコープに影響を与えません。
このリストは 定数 と volatile を使用する方法について説明します。
定数 のキーワードは型または typedef のオブジェクトの基本的な集約型 (またはまたはポインターを変更することができます。項目が 定数 の型の修飾子はいる場合は型は 定数 int に取得されます。 定数 の変数を初期化できますがやストレージの読み取り専用領域に配置できます。 定数 のキーワードはこれは関数ポインターが何かが変更されないようにするため 定数 へのポインターを宣言する場合に便利です。
コンパイラはいつでもプログラムでvolatile の変数が値を使用したり変更したり未知のプロセスにアクセスできると仮定します。したがってvolatile 変数の各割り当てに指定した最適化にかかわらずまたは参照のコマンド ラインでコードは効果がないように生成する必要があります。
volatile が単独で使用されint と見なされます。volatile の型指定子が特別な信頼できるメモリ位置へのアクセスを提供するために使用できます。としてハンドラーによってプログラムを実行するかメモリ マップ I/O 制御レジスタのような特殊なハードウェアにアクセスしたり異なる可能性があるデータとオブジェクトの volatile を使用します。有効期間の volatile として変数を宣言したりvolatile に一つの参照をキャストできます。
項目には項目自体のプログラムで適切に変更できない 定数 と volatile でも非同期処理によって変更される可能性があります。