マクロ

13.マクロ


今まで#include<...>なんて記述をいろいろ書いてきました.
こういった#で始まる記述がマクロです.
通常の文法とは異なりこれはコンパイルの前処理段階での命令で,ソースコードの整形に使われます.

#include<ファイル名>

これは<ファイル名>の内容をそのままここに置くという命令です.
これまで毎回先頭に#include<stdio.h>と書いていました.
これはstdio.hというファイルがあり,そこに書かれているprintf関数やscanf関数を利用するためのものだったのです.
これによりstdio.hの内容がそのままここに置かれ,関数が定義され使用可能になります.
他にも様々なファイルがあり,適宜includeして使用可能にします.

#define 文字列1 文字列2

これはソースコード中に含まれる文字列1を文字列2に置き換えるというものです.
いかの例で見てみましょう

#include <stdio.h>
#define NUMBER 10

int main(void)
{
printf("#d\n\r", NUMBER);
	return 0;
}

これは前処理が施されるとNUMBERが10に置き換えられ以下のようになります.

#include <stdio.h>

int main(void)
{
printf("#d\n\r", 10);
	return 0;
}

プログラム中に出てくる定数をマジックナンバーと呼ぶのですが,ただの数字ではその数字が何を意味するのか分かりにくいうえ,
もし変更があったら使われている個数分変更しなければならなくなります.
defineを利用すれば定数に意味を持たせられる上に変更箇所も一か所で済みます.
マクロは積極的に利用していきましょう.
最終更新:2017年08月21日 13:19