Cプリプロセッサ(preprocessor)

 前処理として、コンパイルの最初のステップで、 ができる。 #で始まる行でプロプロセッサに指示を与える。

ヘッダファイル

 一般にヘッダファイルには以下のものが記述されている

ファイルのインクルード

#include "ファイル名"

記号定数・マクロ定義

#define 名前 置換テキスト

 記号定数定義

#define	TAB	'\t'
#define	LF	'\n'
#define	PI	3.1415926535

	circle = r * r * PI;
	/* の様に使う */

 マクロ定義

#define	forever	for(;;)

	forever
	{
		/* 無限に繰り返す処理 */
	}
	/* の様に使う */

 引数付きマクロ定義

#define	max(A, B)	((A) > (B) ? (A) : (B))

	printf("x と y の大きい方の値は %d \n", max( x, y ) );
	/* の様に使う */

条件コンパイル

#if 条件式
/*
	条件式が真の時コンパイルされる
*/
#endif
#ifdef 名前	/* #if defined(名前)と同じ */
/*
	名前が定義されている時コンパイルされる
*/
#endif
#ifndef 名前	/* #if !defined(名前)と同じ */
/*
	名前が定義されていない時コンパイルされる
*/
#endif
#if 条件式
/*
	条件式が真の時コンパイルされる
*/
#else
/*
	条件式が偽の時コンパイルされる
*/
#endif
#if 条件式1
/*
	条件式1が真の時コンパイルされる
*/
#elif 条件式2
/*
	条件式1が偽で条件式2が真の時コンパイルされる
*/
#else
/*
	条件式が共に偽の時コンパイルされる
*/
#endif

トークン(token:綴り)
プログラムを構成する意味のある塊。
識別子(名前)、キーワード、定数、文字列リテラル、演算子、他の区切子 の6種
トークンを区切るために空白が用いられることがある。
空白(blank:ブランク)
スペース、水平タブ、垂直タブ、改行、改頁、コメント