プリプロセッサとは、プログラムを動かす前にデータ入力やデータ整形などの準備的な処理の事です。
#define
defineとは、マクロ名(定義した文字列)に定数や式を置き換える場合に使用します。
この置き換える処理のことをマクロ処理といいます。
定数について
#defineは下記のように記述して使用します。
マクロ名は一般に全て大文字で記述し、変数名と同じように扱えます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<式の構成> #define マクロ名 定数や式 <例> #define PI 3.14 #define CIRCLE_RATIO "円周率" void OnInit(){ double area=PI*10*10; //定数を使った計算 Print(CIRCLE_RATIO,PI); //「円周率3.14」が表示 Print("半径10の円面積は",area); //「半径10の円面積は314.0」が表示 } |
#defineを使って、3.14の値を「PI」に置き換えて、円周率の文字を「CIRCLE_RATIO」に置き換えます。
関数の定義について
#defineを使って関数を定義することができます。
関数名と引数を記述し、その後に処理内容を記述します。
※引数の上限は8つまでです。
1 2 3 4 5 6 7 8 9 10 |
<式の構成> #define 関数名(引数) (処理内容) #define PI 3.14 #define area(r) (PI*r*r) void OnInit(){ Print(area(10)); //「314.0」が表示 } |
つまり、area(r) は (PI*r*r) に置き換えられているので、r が 10 という事は、area(10) → PI*10*10 → 3.14*10*10=314.0という計算が成立します。
処理内容の()について
処理内容は「()」括弧で囲っておいた方が意図しない処理が起こらず安心です。
「()」括弧で囲ってないと掛け算が優先されて思った計算がされないという事ですね。
1 2 3 4 5 6 7 8 9 10 |
#define A 3 #define B 8 #define C A+B #define D (A+B) Void OnInit(){ Print(C*2); //2+3*2=8となり「8」が表示 Print(D*2); //(2+3)*2=10となり「10」が表示 } |
コメント