C言語の基礎 |
プログラムがコンパイルされる前に、プリプロセッサがプログラムに対して、語句の置き換えや、別ファイルの取り込みなどの処理をする。
例えば、処理可能な最大値を変数maxに代入するとき、
max = 100;
と書くよりも
max = JOB_MAX;
のように、略語などで書く方がプログラムが読みやすくなる。このJOB_MAXに100という値をプリプロセッサの命令で定義しておくと、コンパイル前にプリプロセッサによって100に置き換えられる。
プリプロセッサの機能を利用するには、#で始まるキーワード(命令と考えて良い)を使う。
7-1 プリプロセッサのキーワード
(1) #define
#define MACRO words #define MACRO(par1,...) words |
マクロ名MACROに対して、語句wordsを定義する。プログラム中で定義されている行以降にMACROという単語があると、プリプロセッサによってwordsに置き換えられる。
#define JOBMAX 1000
int x = JOBMAX;
は、プリプロセッサ処理後
int x = 1000;
に置き換えられる。また、
#define WA(a, b) a + b
int x = 100, y = 200, z;
z = WA(x, y);
は、同様に
int x = 100, y = 200, z;
z = x + y;
に置き換えられる。
/* sample52.c */
#include <stdio.h>
#define WA(a, b) a + b
int main(void)
{
int x = 100, y = 200, z;
z = WA(x, y);
printf("z = %d\n",z);
}
(2) #undef
#undef MACRO |
#defineで定義されたマクロ名を無効にする。
(3) #include
#include <filename> #include "filename" |
別のファイルfilenameをプログラム中の#includeの位置に取り込む。
<filename>と"filename"の違いは、filenameを探す順番が違うことである。
<filename> システムのディレクトリから探す。
"filename" ユーザのディレクトリを探し、なければシステムのディレクトリを探す。
(4) その他
#if〜#elif〜#else〜#endif
#ifdef〜#else〜#endif
#ifndef〜#else〜#endif
#line
Copyright © 2001 Hiroshi Masuda |