12.定数

1085 ワード

数値型定数は、ソースファイルにハードコーディングされるべきではありません.Cプリプロセッサのdefineプロパティを使用して、定数に意味のある名前を付ける必要があります.符号化された定数は、コードをより読みやすくすることができます.これらの値を1つの場所で統一的に定義することも、大規模なプログラムの管理に便利であり、定数値を1つの場所で統一的に変更することができ、defineの値を変更するだけでよい.列挙データ型は、離散値を持つ変数のセットを宣言するのに適しており、コンパイラは追加のタイプチェックを行うこともできます.少なくとも、任意のハードコーディングの値定数には、値の由来を説明するための注釈が必要である.
定数の定義はその使用と一致するべきである.例えば、540を使用して暗黙的なfloatタイプ変換を追加するのではなく、540.0を浮動小数点数として使用します.定数0と1がdefineで定義されずに直接使用される場合があります.たとえば、forループ文で配列の下付きを識別する定数です.
for (i = 0; i < ARYBOUND; i++)

上のコードは合理的ですが、下のコードは
door_t *front_door = opens(door[i], 7);
if (front_door == 0)
    error("can't open %s\\\
", door[i]);

不合理です.最後の例ではfront_doorはポインタです.値がポインタの場合、0ではなくNULLと比較する必要があります.NULLは、標準I/Oライブラリヘッダファイルstdioに定義.hでは、いくつかの新しいシステムではstdlib.hで定義します.1または0のような単純な値であっても、TRUEとFALSEとしてdefineで定義してから使用することが望ましい(YESとNOの方が読みやすい場合もある).
単純文字定数は文字値として定義され、数値は使用されません.非可視テキスト文字の使用は奨励されません.移植できないためです.非表示テキスト文字が必要な場合、特に文字列で使用される場合は、1文字ではなく3つの8進数のエスケープ文字(たとえば、'007')として定義する必要があります.それでも,この用法はその機械的相関性を考慮し,ここでの方法で処理すべきである.