ものづくりBLOG blog page

第3章 何もしない(2):変数−記号文字定数−

2011-01-01 (Sat) 03:03
H8+C言語入門:第3章 何もしない(2):変数−記号文字定数−
−文法(概要)−
 
 「記号文字定数」について説明します。
 「記号定数」ともいいます。
 
 式(文)の中に数値を埋め込むのは、文法違反でありませんが、後々そのソースファイルを
 読んだ人が、その値を理解するのは殆ど無理ということになります。また、同じ数字がソ
 ースファイルのどこそこで使われている時、その変更を行う作業で、洩れなくするには、
 ちょっとした集中力と根性が必要になるでしょう。今は、エディタの検索・置き換え機能
 を使えばいいじゃん、という人がいるかもしれませんけどね。でも、ソースファイルが一
 つだけだったらいいですけどね。複数のソースファイルで分割開発なんてなったら、それ
 こそ、一括変更というのはとれも無理です。
 そこでC言語に便利な機能が備わっております。それが記号文字定数、記号定数というも
 のです。数字に意味を持たせる記号を対応させ、その数字を記号化し、それを式(文)に使
 って、数字、そのものは、別のところで定義しておくというやり方です。
 それでは、使い方を見てみましょう。これこそ、一目瞭然ということですけどね。
 define構文というものを使います。
 
  例 #define INIT_OF_I 0 //変数iの初期値
    int i = INIT_OF_I; //変数iの宣言と初期化
 
 上記の例では、あまりピンとこないかもしれませんが、例えば、AD変換の最低値、最高
 値や、変化させるためのステップなんかを定義する時などに使えますね。
 
  例 #define LOWER 0 //下限値
    #define UPPER 300 //上限値
    #define STEP 20 //ステップ・サイズ
 
 defineの構文の一般的な定義は次の通りです。
 
  #define 名前 それと置き換えるべきテキスト
 
 名前をコンパイラが後続するテキストに置き換えます。
 正確には、コンパイラでは、そうした名前が(引用符なしにでてくると)、それを対応する
 文字列に置き換えていきます。名前としては変数名と同じ形、即ち、英字の後に英数字を
 続けたものを書きます。置き換えられる文字列の方は、任意の文字列でよく、数値に限り
 ません。
 
 上記例で、LOWERとか、UPPER、STEPは、定数でありますから、変数ではないので、宣
 言は、(勿論)しません。
 名前(記号名)は、小文字を使う変数名と容易に区別できる様に、大文字で書くのが普通で
 す。小文字を使っていいのですが、変数と見分けがつかなくなると、これもプログラミン
 グ上で困ることになりますから、普通は大文字だけで構成することが多いです。
 また、define文の行末には、式(文)の終わりを示すセミコロン;がないということに注意し
 てください。あるとコンパイラがエラーにします。
 
 で、この記号文字定数(記号定数)は、ソースファイルでその名前を使う前に、プログラム
 の初めに置くのが普通です。また、この定義が多ければ、また、ソースファイルの構成を
 考えた上で、インクルードファイル(ヘッダファイル)に定義することも多いですね。

ものづくりBLOG

Blog Category

Blog Calendar

RSS 2.0