#defineとは
・目次
1.#defineとは
(1) ブリプロセッサとは、コンパイル前に処理を行うプログラムのこと
(2) コンパイル時の前処理として、マクロ名で指定した文字列を定数や式で置き換える。
(3) この#defineにより、置換することをマクロ置換という。
(4) ただ数値だけだと、何を表してるのか分からないため、可読性を上げるのに、使用される。
2.#defineの使い方
(1) 使用方法、書き方
//ーーーーーーーーーーーーーー
#define マクロ名 定数や式
//ーーーーーーーーーーーーーー
//ーーーーーーーーーーーーーー
意味:定数や式を マクロ名で使用可能になる。
(2) 使用例(#defineを使ったプログラムの作成1:数値の置き換え)
プログラムの内容:
#defineによって、10をAと置く。
これにより、Aを使用すると、10という数値に置き換わる。
#define A 10 // 10の数値をAと置く int main() { int a = A; //aにAを入れる。 printf("a:%d\n",a); //aの値を表示 }
(3) 使用例(#defineを使ったプログラムの作成2:数式の置き換え)
プログラムの内容:
#defineにより、数式を置き換え、関数のように使用する。
#include <stdio.h> //数式を置き換える。 #define Test(pin,data) 5*pin*data int main(void){ // Your code here! int num = Test(5,6); //numを出力 printf("num = %d",num); }
(4) 使用例(#defineを使ったプログラムの作成3:行を分ける)
プログラム内容:
#defineを使った際に、数式などが長くなり、行を分けたい時がある。
行を分けるには、\を使用する。
#defineを2行に分ける。
#include <stdio.h> //#defineにより、数式を置き換え。 //5*pin*dataを置き換えている。 #define Test(pin,data) 5*pin\ *data int main(void){ // Your code here! int num = Test(5,6); printf("num = %d",num); }
(5) 使用例(#defineを使ったプログラムの作成4:配列の要素数を算出する関数の作成)
プログラム内容:
配列の要素数は通常の関数の作成方法では、引数の型のバイト数が要素数として
返ってきてしまうため、要素数を求めることはできなかった。
それが#defineを使用すれば、要素数を求める関数として使用することができる。
#include <stdio.h> //要素数を求める式を置き換える。 #define Elm1(num) sizeof(num)/sizeof(num[0]) int main(void){ // Your code here! //要素数を求める。 //変数の宣言 //char a[] = "TEST"; //配列を宣言 int a[] = {2,4,5}; int elm; //aの要素数を算出する。 elm = Elm1(a); //算出した要素数を出力する。 printf("aの要素数(elm)=%d",elm); //本当にあっているかの確認用 //aの要素数を求める。 #if 1 //sizeof:データ型の大きさを求める単項の演算子 int b = sizeof(a); //配列a(全ての合計)のデータの大きさを求める。 int c = sizeof(a[0]); //配列1個当たり(a[0])のデータの大きさを求める。 int d = b/c; //配列の要素数を求める。 printf("\n"); //改行 printf("配列a(全ての合計)のデータの大きさ:%d\n",b); printf("配列1個当たり(a[0])のデータの大きさ:%d\n",c); printf("配列aの要素数:%d個\n",d); //printf("a=%s\n",a); //配列aの値を列挙する。 #endif }
関連記事
過去の記事:
C言語:
・組み込みの為のC言語基礎知識1(printf) - Project_OKI’s diary
・C言語基礎知識2(for分で処理を繰り返す) - Project_OKI’s diary
・C言語基礎知識3(配列) - Project_OKI’s diary
・知らないと損するお金の話(ふるさと納税、確定申告とワンストップ納税どっちが得?) - Project_OKI’s diary
・C言語基礎知識6(関数) - Project_OKI’s diary
・C言語基礎知識7(構造体1) - Project_OKI’s diary
・C言語基礎知識8(enum:列挙型) - Project_OKI’s diary
・C言語基礎知識9(typedef) - Project_OKI’s diary
・C言語基礎知識10(extern宣言) - Project_OKI’s diary
・C言語基礎知識11(#define) - Project_OKI’s diary