C言語 入門 小学生でもわかるC言語3

九日目 プリプロッセッサ

「わかりやすく!」がテーマです!

HOME/小学生でもわかるC言語3 目次/九日目 プリプロッセッサ/

広告

↓2016年02月29日発売↓

12歳からはじめる ゼロからのC言語 ゲームプログラミング教室

新品価格
¥2,462から
(2016/5/10 22:16時点)

もっと!C、C++言語本

目次へ戻る

?と思ったら

わからなそうな用語集

プリプロッセッサ

いつもプログラムの先頭に書いていた「#include 〜」などの事を正しくはプリプロセッサといいます。

これはコンパイラに指示を出すもので「#include 〜」の他に「#define 〜」というモノなどいろいろな種類があります。

今回はその中でもよく使われるモノにしぼって説明をしたいと思います。

定数に名前をつける「#define 〜」

定数っていうのは定まった数、決まった数とかそんな数の事です。

プログラムでいうと基本的にプログラム中では変更しない数字の事になります。

「基本的にプログラム中では変更しない数字」というトコロが変数との違いです。

ゲームでいうなら、ゲームフィールドの大きさとか、最大の敵出現数とか・・・。

そんな数字に名前を付けてプログラムを見やすくしようというのが今回の「#define 〜」です。

まずは次のプログラムを実行してみてください。

/*プログラム21*/
#include <stdio.h>
#define COUNT_MAX 10

int main(){
	int count = 0;
	int ans = 0;
	
	for(count = 0;count <= COUNT_MAX;count++){
		ans = ans + count;
	}

	printf("ans = %d\n", ans);	

	return 0;
}

■実行結果■

実行結果(i-9-1)

数字を順番に1+2+3・・・10まで足していくプログラムです。

次の部分にご注目ください。

#define COUNT_MAX 10

ここで名前を付けてます。

「COUNT_MAX」は数字の「10」ですよという意味です。

#define 名前 数字

こんな感じですね。

名前を付ける時は大文字にするのがお約束らしいです。

「#define 〜」はプログラムのどこに書いても大丈夫ですが、基本的にはわかりやすいようにプログラムの先頭にまとめて書きます。

そしてこれを使う時は

for(count = 0;count <= COUNT_MAX;count++)

プログラム中にそのまま書くだけであとはコンパイルする時に自動的に元の数字に戻してくれるというワケです。

読みやすく、変更しやすい

たとえばさきほどのプログラムを「1〜100」まで計算させるプログラムに変更したい場合は

#define COUNT_MAX 100

この部分を変えるだけですぐ変更ができます。

いちいちプログラムの中身を見て目的の「for」文を探す手間が省けますね!

そしてプログラムの中身を確認しなきゃいけない時などにもこのように名前をつけておく事によってその数字がなんの数字なのかが一目でわかるようになるのです!

このように「#define 〜」を使う事によってプログラムがより「読みやすく、変更しやすい」になるのですね!

ちなみに今まで何度か目にした事のある「#define _CRT_SECURE_NO_WARNINGS」これは「#define」の少し特別な使い方になるのでここでは別のモノとしておいてください。

プログラムの流れを作る

「#define」と「#ifdef」というのを使って大きな意味でのプログラムの流れを作る事ができます。

/*プログラム22*/
#include <stdio.h>
#define CASE_1

int main(){

	#ifdef CASE_1
		printf("ケース1を実行します。\n");
	#endif


	#ifdef CASE_2
		printf("ケース2を実行します。\n");
	#else
		printf("ケース2「else」を実行します。\n");
	#endif		


	return 0;
}

■実行結果■

実行結果(i-9-2)

「#define」の少し違う使い方です。

#define CASE_1

ここの部分にいつものように数字がありません。

ここで大事なのは

「CASE_1」を「#define」しました!

という事です!

そして続きを見てみると

#ifdef CASE_1
	printf("ケース1を実行します。\n");
#endif

ここで使っている「#ifdef CASE_1」はなんとなく想像つくかと思いますが、

「もしCASE_1が#defineされていれば」

みたいな意味になります。

「if」文が少し変わっただけですね。

終わりの「#endif」までで1セットです。

「if」とくれば当然「else」もあります。

#else

これらを使って大きな意味でのプログラムの流れを作る事によってエラー箇所の発見などに使われたりします。

「#define」を解除する

もし「#define」したのを解除したい場合は「#undef」を使います。

/*プログラム23*/
#include <stdio.h>
#define CASE_1

int main(){

	#ifdef CASE_1
		printf("ケース1を実行します。\n");
	#endif

	#undef CASE_1

	#ifdef CASE_1
		printf("ケース1を実行します。\n");
	#endif

	return 0;
}

■実行結果■

実行結果(i-9-3)

プログラムの中ほどで

#undef CASE_1

と解除しているので2回目の「#ifdef」は実行されていないのが確認できますね!

プリプロッセッサは読みやすく変更しやすいプログラムを書く上で大変重要なモノなのでたくさん使って身につけてしまいましょう!

それでは次回は変数に名前を付けたいと思います。

次回

十日目 変数に名前を付ける

□ページの先頭へ□

□目次へ戻る□

広告

↓2014年06月20日発売↓

14歳からはじめるC言語わくわくゲームプログラミング教室 Visual Studio 2013編

新品価格
¥2,500から
(2016/5/10 22:17時点)

↓2014年10月25日発売↓

超本格! サンプルで覚えるC言語 3Dゲームプログラミング教室

新品価格
¥3,110から
(2016/5/10 22:18時点)

↓2013年07月25日発売↓

小学生からはじめるわくわくプログラミング

新品価格
¥2,052から
(2016/5/10 22:21時点)

↓2016年05月13日発売↓

小学生からはじめるわくわくプログラミング2

新品価格
¥2,052から
(2016/5/10 22:22時点)

もっと!C、C++言語本